![](/img/trans.png)
[英]Cloning a div and changing the id's of all the elements of the cloned divs
[英]Changing the ID of all “div” elements (Javascript)
如标题所示,我正在尝试使用标签“ 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>
不要for...in
并重用document.getElementsByTagName
结果。
function setIDs() {
var divs = document.getElementsByTagName('div');
for(var i=0; i<divs.length; i++) {
divs[i].id = "child" + i;
}
}
无效的JavaScript。
var divs[] = new Array();
另外,请勿将for-in
用于Array或类似Array的迭代。 它通常会失败。
可以使用jQuery吗? 如果是这样,您应该尝试这样的事情:
var x = 0;
$("div").each(function(){
$(this).attr("id", "child"+x);
x++;
});
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;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.