在for循环中设置元素的id

时间:2013-12-11 10:13:09

标签: javascript html dom for-loop

我正在尝试创建一个计算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;
    }
}

2 个答案:

答案 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;
    }
}