张经纬的博客 - 分享互联网

removeChild的障眼法

有结构:

<ul id="demo">
    <li>a</li>
    <li>b</li>
    <li>c</li>
</ul>

如果运行代码1:

var ul = document.getElementById('demo');
var liList = ul.getElementsByTagName('li');
for (var i = 0; i < = liList.length; i++) {
    ul.removeChild(liList[i]);
}

如果和我一样被欺骗了,那么看看正确的代码就明白原因啦!

var ul = document.getElementById('demo');
var liList = ul.getElementsByTagName('li');
var lilength =  liList.length;
for (var i = 0; i < lilength; i++) {
    ul.removeChild(liList[0]);
}
加入书签:
  • QQ书签
  • 豆瓣
  • 豆瓣九点
  • Haohao
  • RSS
  • email

原文链接|

目前 共有 4 条评论 ,点此发表评论

  1. bunorte

    九月 27th, 2009 @ 22:52

    这个循环是不是可以精简掉?

    回复

  2. 船长

    九月 28th, 2009 @ 17:01

    以前在ppk on javascript里面看过ppk谈这个问题,真的一不小心就弄错了。

    回复

  3. 船长

    九月 28th, 2009 @ 17:05

    var demoUl = document.getElementById(’demo’);
    var lis = demoUl.getElementsByTagName(’li’);
    while(lis.length) {
    demoUl.removeChild(lis[0]);
    }
    这样子就安全多了

    回复

  4. 张经纬

    九月 28th, 2009 @ 23:30

    @bunorte
    可以用别的。

    @船长
    是的,用while也蛮好的。

    回复