更改所有“div”元素的ID(Javascript)

时间:2012-06-19 21:34:02

标签: javascript jquery

正如标题所说,我正在尝试使用标记“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 个答案:

答案 0 :(得分: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;
  }
}

答案 1 :(得分:0)

JavaScript无效。

 var divs[] = new Array();

此外,不要将for-in用于Array或类似Array的迭代。它经常会失败。

答案 2 :(得分:0)

你能用jQuery吗?如果是这样,你应该尝试这样的事情:

var x = 0;
$("div").each(function(){
    $(this).attr("id", "child"+x);
    x++;
});

答案 3 :(得分:-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;
    }
}