js节点列表变量的自动更新

即使是原生的JavaScript,涉及到appendChild这个操作,我们仍不能掉以轻心。

下面这个例子尝试把左边的div标签中的4p标签移动到右边去,然而每调用appendChild一次,pElements就被自动更新一次,被移动的标签会到节点列表的末尾去,而后面的标签的下标都往前挪了一位。

以第一次为例,a(0), b(1), c(2), d(3),变成了b(0), c(1), d(2), a(3)

由于后面的元素自动往前进了,就不得不在appendChild之后,将循环增量减1了。令人郁闷的是,如此以来,当执行完四次后,i的值在和length做比较时仍然为0,它会继续转完剩下的没有用的123。也因此,if语句是必需的,否则将导致死循环。或者也可以采取针对的写法:“for (var i = 0; i < 1;i++)”,if语句都可以省了。

这真是蛋疼的特性!对数组中一个元素的操作竟然会导致整个数组的下标改变。






    
    
    
    


    

a

b

c

d


你可能感兴趣的:(JavaScript)