我正在尝试创建一个计算li
元素的函数,然后给它们id="listItem1"
,id="listItem2"
等等。问题是j
总是等于0,我无法理解为什么。这是代码。我正在动态地将li
元素添加到列表中,但无论它们有多少,它们总是得到id="listItem0"
:
function countLi() {
var liCount = document.getElementsByTagName("li").length;
for (j = 0; j < liCount; j++) {
document.getElementsByTagName("li")[j].id = "listItem" + j;
document.getElementsByTagName("input")[j + 1].id = "checkbox" + j;
}
}
答案 0 :(得分:1)
已解决:http://jsbin.com/ERAqIVaj/1/edit?html,js,output
由于性能原因,请不要在循环中使用document.getElementsByTagName。
function countLi() {
var li = document.getElementsByTagName("li"),
input = document.getElementsByTagName("input");
for (j = 0; j < li.length; j++) {
li[j].id = "listItem" + j;
input[j].id = "checkbox" + (j + 1);
}
}
答案 1 :(得分:0)
尝试 -
function countLi() {
var liCount = document.getElementsByTagName("li").length;
for (var j = 0; j < liCount; j++) {
document.getElementsByTagName("li")[j].id = "listItem" + j;
document.getElementsByTagName("input")[j + 1].id = "checkbox" + j;
}
}
或者
function countLi() {
var liCount = document.getElementsByTagName("li").length;
var j;
for (j=0; j < liCount; j++) {
document.getElementsByTagName("li")[j].id = "listItem" + j;
document.getElementsByTagName("input")[j + 1].id = "checkbox" + j;
}
}