Discuss
/
JavaScript
/
练习
练习
Topic source这个有问题吧!
老湿说过,当一个结点被删除时,list 已经被改变,length - 1,i 指向的元素会发生变化。
所以当把老湿的 li 顺序修改后,这代码就会出错
<html>
<body>
<ul id="test-list">
<li>JavaScript</li>
<li>DirectX</li>
<li>ANSI C</li>
<li>HTML</li>
<li>Swift</li>
<li>CSS</li>
</ul>
</body>
<script>
var list = document.getElementById('test-list');
var child = list.children;
var arr = ['JavaScript','HTML','CSS'];
for(var i of child)
{
//console.log('i = ' + i + ' child-i: ' + i.innerText);
if(arr.indexOf(i.innerText) == -1) {
list.removeChild(i);
}
}
</script>
</html>
输出为:
JavaScript
ANSI C // 这里删除完 DirectX 后,你的 i 指向了下一个(HTML),所以 ANSI C 没有删除!!
HTML
CSS
- 1
用户6457204046