循环删除节点时,只循环前2个我的代码:
  function delElementHtmlByName(name){
        var t=null;
        var objs=document.getElementsByName(name);
        for(var i=0;i<objs.length;i++){  
            t=objs[i].parentNode;
            t.removeChild(objs[i]);
          
        }
    
    }不管这时我的ojbs.length是10还是20都只循环2次
如果objs.length是2,就是循环1次
求解!!!

解决方案 »

  1.   

    function delElementHtmlByName(name){
        
        var objs = document.getElementsByName(name);
        while (objs.length > 0) {
            objs[0].parentNode.removeChild(objs[0]);
        }
    }
      

  2.   

    谢谢楼上!再请教下,
    用for循环时,发现每循环一次objs.length会减1。这是为什么??
      

  3.   

    可这是先赋值给objs,再从document对象里删除节点。难道每循环一次,document.getElementsByName(name)就取一次值?
      

  4.   

    “赋值的只是引用”,瞬间懂了!谢谢!
    “你的头像很有趣”,你的头像也很有趣呀,怪盗基德?还有个问题,,
    如何在当前节点下增加个兄弟节点?appendChild()这个方法会增加到最后去。。
      

  5.   

    object.insertBefore(新节点[, 需要增加在哪个节点前(这里需要传入一个节点引用)])