JavaScript数组在循环外部是正确的,但在循环内部未定义

时间:2016-02-01 16:49:01

标签: javascript

function deleteList () {
    var toDoList;
    toDoList = document.getElementById("todo");
    var listArray = document.getElementsByTagName("li");
    console.log(listArray);
    /* returns correctly: [li#first.kitchen, li#second.kitchen,
    li#third.kitchen, li#fourth, first: li#first.kitchen, etc... */

    for (var i = 0; i < listArray.length; i++); {
        var listItemHolder = listArray[i];
        console.log(listItemHolder);
        /* Returns undefined */
        toDoList.removeChild(listItemHolder); 
    } 
}

我只是制作一个简单的待办事项列表,允许用户在按下执行此功能的“删除按钮”时删除所有项目。

我尝试过:

  • 删除listItemHolder并使用.removeChild(listArray [i])。
  • 将for循环的周期改变为i <4

对所发生的事情的任何解释都将不胜感激!感谢

1 个答案:

答案 0 :(得分:2)

它是for循环的右括号之后的form

删除它

;

发生了什么事? 你有一个空的for循环体for (var i = 0; i < listArray.length; i++) { 循环;的值为ilistArray.length为undefinend

你还必须向后循环。
所以你应该使用

listArray[listArray.length]

否则你只会删除列表中的每一个项目 那怎么样? 看这里 首先你有这个清单

for (var i = listArray.length-1; i >= 0; i--) {

删除第一个后,你就有了这个

0: todo 1
1: todo 2
2: todo 3
3: todo 4

你的计数变量i的值为1.接下来要删除的是todo 3

0: todo 2
1: todo 3
2: todo 4

这是结束