2015-02-11 105 views
0

我正在使用动态复选框,可以在其中添加和删除例如用户。添加工作正常,但要删除所有子元素的麻烦。尤其是br我不知道如何删除。删除子元素br

 <style> 
    .container { align:right; border:1px solid #000000; width:300px; height: 100px; overflow-y: scroll;} 
    </style> 
    <script type="text/javascript"> 
    var addTask = function() { 

     var newCheckbox = document.createElement("input"); 
     newCheckbox.type = "checkbox"; 
     newCheckbox.value = document.getElementById("MailAddress").value; 
    newCheckbox.id = "C11"; 
     document.getElementById("UserList").appendChild(newCheckbox); 


     var label = document.createElement('label'); 
     label.htmlFor = document.getElementById("MailAddress").value; 
    label.id = "L11"; 
     label.appendChild(document.createTextNode(document.getElementById("MailAddress").value)); 

     document.getElementById("UserList").appendChild(label); 
     document.getElementById("L11").appendChild(document.createElement("br")); 
    } 

    function delTask() { 

     var item = document.getElementById("C11"); 
     item.parentNode.removeChild(item); 
     var item = document.getElementById("L11"); 
     item.parentNode.removeChild(item); 
     // How can I remove die <br> too? 
    } 
    </script> 
    </head> 
    <body> 


    <header> 
     <p>Usergroup:</p> 
    </header> 
    <input type="text" id="MailAddress"> 
    <input type="submit" value="Add Mail Address" onClick="addTask()" id="AddUser"> 

    <div class="container" id="UserList"></div> 

    <input type="submit" value="Delete One Mail" onClick="delTask()" id="remove"> 

回答

0

如果删除<br>是问题,那么试试这个

var e = document.getElementsByTagName("p")[0]; 
e.innerHTML = e.innerHTML.replace('<br>', ''); 
+0

似乎工作,很好,谢谢!因此,TagName(“p”...指向此BR? – 2015-02-11 22:07:05

+0

不,它不是指向
它只是用空白替换
的出现。如果它解决了您的问题,请不要忘记upvote并将其标记为正确回答 – void 2015-02-11 22:09:40

0

可以使用document.getElementsByTagName('br')让所有br tags的数组,那么你可以删除你要删除的BR标签。这要求您事先知道文档中有多少个br标签,以便您删除具​​有正确索引的标签。

var x = document.getElementsByTagName("br"); 
x[1].parentNode.removeChild(x[1]); 

将删除文档中的第二br标签,假设你有两个br标签开始。

0

这应该做你所需要的 - 它看起来与ID的元素,然后以后每同级节点删除了一个元素(或标签),而不是评论,文本等

function delTask() { 
     var el1 = document.getElementById("C11"); 
     var el2 = document.getElementById("L11"); 
     var next = el2.nextSibling; 
     // create array to hold all the elements to be removed 
     var items = [el1, el2, next]; 
     // iterate through siblings until a tag (here <br/>) is found 
     while(next && next.nodeType != 1) { 
      next = next.nextSibling; 
      items.push(next); 
     } 
     // remove elements in reverse order 
     while(var el = items.pop()){ el.parentNode.removeChild(el); } 
     item.parentNode.removeChild(item); 
    } 

有一些注意事项:在一个块中不应该多次使用具有相同变量的“var”。 ID(C11,L11)应该是参数,而不是硬编码值。