同じクラスのdivが5つありますが、IDが互いに重なり合っています。javascriptを使用してそれらをトラバースするにはどうすればよいですか?それらの名前はdiv1、div2、div3などです。
また、トラバース中に各divの属性を変更するにはどうすればよいですか?
どうもありがとうございます。
タム。
同じクラスのdivが5つありますが、IDが互いに重なり合っています。javascriptを使用してそれらをトラバースするにはどうすればよいですか?それらの名前はdiv1、div2、div3などです。
また、トラバース中に各divの属性を変更するにはどうすればよいですか?
どうもありがとうございます。
タム。
最近のブラウザでは、 getElementsByClassName関数を使用してそれらを取得できます。
var elements = document.getElementsByClassName('myClass');
for (var i = 0, n = elements.length; i < n; i++) {
//..
}
elements.length
HTMLCollectionsを反復処理するときの一般的な方法である、1回だけ取得していることに注意してください。
これは、これらのコレクションが「ライブ」であり、いつでも変更される可能性があり、反復ごとに長さプロパティにアクセスするのはコストがかかるためです。
完全なクロスブラウザの実装については、Resig氏による次の記事を確認してください。
編集:ここに、 DustinDiazgetElementsByClassNameクロスブラウザーの純粋なDOM実装のリファクタリングバージョンを残します。
function getElementsByClassName(node,classname) {
if (node.getElementsByClassName) { // use native implementation if available
return node.getElementsByClassName(classname);
} else {
return (function getElementsByClass(searchClass,node) {
if ( node == null )
node = document;
var classElements = [],
els = node.getElementsByTagName("*"),
elsLen = els.length,
pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)"), i, j;
for (i = 0, j = 0; i < elsLen; i++) {
if ( pattern.test(els[i].className) ) {
classElements[j] = els[i];
j++;
}
}
return classElements;
})(classname, node);
}
}
for(var i = 1; i++; i<=5){
var div = document.getElementById("div" + i);
//do stuff with div
}
編集:あなたはそれを「名前付き」div1 ... div5と呼んでいるようですが、それが機能するためにもid="div1"を指定する必要があります
まず、この記事を読んでください
と
var elements = document.getElementsByTagName("div");
for ( var i = 0; len = elements.length; i < len; i ++ )
{
if ( elements[i].className === "yourclassname" )
{
// change the desired attribute of element.
//Eg elements[i].style.display = "none";
}
}
各関数のjQueryを使用する
$(".yourclassname").each ( function() {
// $(this) will fetch the current element
});
PrototypeやjQueryのようなものを使用していますか?もしそうなら、トラバースが非常に簡単になるので、そのうちの1つを強くお勧めします。たとえば、Prototypeの場合、次のようになります。
$$('.className').each(function(s) {
//what you want to do
});
ライブラリベースの回答は明らかですが、それらの使用が制限されている場合は、 Firefox を使用するよりも互換性のある方法がいくつかdocument.getElementsByClassName
あります (新しくて輝かしい!) 。
ハッキングするには少し手間がかかりますが、古いブラウザーでも queryselectorAll を有効にする方法に関する記事を次に示します。
http://ajaxian.com/archives/creating-a-queryselector-for-ie-that-runs-at-native-speed
Mootools または Prototype でこれを行うには:
$$('.className').each(function(element, index) {
//what you want to do
});
Jquery では、同じ sans ダブルドルです (他の人が投稿したように):
$('.className').each(function() {
//what you want to do
});
jQuery ソリューションは次のとおりです。
すべての div の属性を設定します。
$(".yourclassname").attr("attribute","value");
すべての div のテキスト コンテンツを設定します。
$(".yourclassname").text("New content");
すべての div の html コンテンツを設定します。
$(".yourclassname").html("<h1>New content</h1><p>blah blah blah</p>");
jQuery ライブラリはhttp://jquery.com/にあります。