Discuss / JavaScript / 为什么报错呢?在本地测试中输出是对的呀

为什么报错呢?在本地测试中输出是对的呀

Topic source

var ul=document.getElementById('test-list'); ul.removeChild(ul.children[5]); ul.removeChild(ul.children[3]); ul.removeChild(ul.children[1]);

廖雪峰

#2 Created at ... [Delete] [Delete and Lock User]

你在本地测试后就把dom节点给删了,在页面再执行一遍肯定不对

刷新页面重试

Gods_巨蚁

#3 Created at ... [Delete] [Delete and Lock User]

不清楚为何不能过

var names = ['JavaScript', 'HTML', 'CSS'];
var parent = document.getElementById('test-list');
var i;
for (i = 0; i < parent.children.length; i++) {
    if (names.indexOf(parent.children[i].innerText) === -1) {
        parent.removeChild(parent.children[i]);
    }
}

因为children是实时更新的,你的循环里如果成功删除了一个,此时后面的索引全都变为原来索引减一,而你的i还是自增了,所以就跳过了一个


  • 1

Reply