Javascript没有删除div中的所有元素

时间:2013-08-23 19:26:09

标签: javascript html removechild

创建这段javascript代码以删除div中的所有输入

function remove_inputs(){
   var elements=document.getElementById('thediv').getElementsByTagName('input');
   for(var i=0;i<elements.length;i++){
       elements[i].parentNode.removeChild(elements[i]);
   }
}

我确实只删除了一半的元素,我必须多次调用它才能删除所有输入。

请检查此 Jsfiddle 以查看其实际效果。

3 个答案:

答案 0 :(得分:5)

这是因为您在从live nodelist移除时跳过了项目。

当您在索引0处删除项目时,索引1处的项目将采用索引0,因此您不会删除它,因为您的迭代已经在索引1上。

这样做:

function remove_inputs(){
   var elements=document.getElementById('thediv').getElementsByTagName('input');
   while(elements.length){
       elements[0].parentNode.removeChild(elements[0]);
   }
}

答案 1 :(得分:2)

为什么不使用jQuery呢?

function remove_inputs(){
   var elements = $('#thediv input');
   elements.remove();
}

以下是更多信息:http://api.jquery.com/remove/

答案 2 :(得分:-1)

function remove_inputs(){
   var elements = document.getElementById('thediv').getElementsByTagName('input');
   var size = elements.length;

   for(var i = 0; i < size; i++){
       elements[i].parentNode.removeChild(elements[i]);
   }
}