1

タイトルの通り、「div」タグの付いた全要素のIDを変更しようとしています。動作しない私の現在のスクリプトは次のとおりです。

function setIDs() {
    var divs[] = new Array();
    for(i in document.getElementsByTagName('div'))
        divs[i] = document.getElementsByTagName('div')[i];
    for(idNum in divs) divs[idNum].id="child"+idNum;
}

したがって、setIDs() が終了すると、HTML は次のようになります。

<div id="child0">...</div>
<div id="child1">...</div>
...
<div id="childn">...</div>
4

4 に答える 4

2

for...in結果を使用して再利用しないでくださいdocument.getElementsByTagName

function setIDs() {
  var divs = document.getElementsByTagName('div');
  for(var i=0; i<divs.length; i++) {
    divs[i].id = "child" + i;
  }
}
于 2012-06-19T21:37:12.347 に答える
0

JavaScript が無効です。

 var divs[] = new Array();

for-inまた、配列または配列のような反復には使用しないでください。失敗することが多いでしょう。

于 2012-06-19T21:36:42.617 に答える
0

jQueryは使えますか?もしそうなら、次のようなことを試してみてください:

var x = 0;
$("div").each(function(){
    $(this).attr("id", "child"+x);
    x++;
});
于 2012-06-19T21:39:29.647 に答える
-1
function setIDs() {
    var divs[] = new Array();
    // no need for an extra array. Invalid identifier, btw.

    for(i in document.getElementsByTagName('div'))
    // never run through Arrays with for-in-loops. It's the same for NodeLists.

        divs[i] = document.getElementsByTagName('div')[i];
        // you might have cached the NodeList to a variable

    for(idNum in divs) divs[idNum].id="child"+idNum;
    // again, don't use a for-in-loop. And why at all do you need a second loop?
}

訂正:

function setIDs() {
    var divs = document.getElementsByTagName('div');
    for (var i=0; i<divs.length; i++) {
        divs[i].id = "child"+i;
    }
}
于 2012-06-19T21:40:23.933 に答える