簡體   English   中英

在具有id的div內的ul里面的li上的removeChild?

[英]removeChild on a li inside a ul inside a div with an id?

我在網頁上有以下代碼:

<div id="emails">
<ul>
<li>email1</li>
<li>email2</li>
</ul>
</div>

<a href="#" onClick="deleteEmail()">click</a>

我想刪除第一封電子郵件,我一直在嘗試這個:

function deleteEmail(){
    var ul = document.getElementById('emails').getElementsByTagName('ul');
    ul.removeChild(ul.childNodes[0]);
}

我是Javascript DOM的新手,所以如果有更好的方法,請告訴我。

注意:我想在沒有任何js框架的情況下這樣做。

最正確的:

var ul = document.getElementById('emails').getElementsByTagName('ul')[0];
var li = ul.getElementsByTagName('li')[0];
ul.removeChild(li)

1)更正確的字符串:

var ul = document.getElementById('emails').getElementsByTagName('ul')[0];

2)請注意,在“ul.childNodes [i]”中,我將為0表示空格,1表示<li>email1</li> ,2表示空格等。您應該使用ul.getElementsByTagName('li')[i]如果你只對<li> s感興趣

DOM節點的子節點包括文本和注釋,而不僅僅是元素,因此為了確定要刪除的元素所在的索引,您需要考慮它們。 在您的情況下, <ul>第一個<li>的索引是1

您的`email'db的DOM如下所示:

DIV
  text( whitespace )
  UL
    text ( whitespace )
    LI 
      text (email1)
    text ( whitespace )
    LI
      text (email2)
    text ( whitespace )
  text (whitespace)

話雖如此,最簡單的方法是直接找到要刪除的<li> ,然后將其刪除。

var toRemove = document.
      getElementById('emails').
      getElementsByTagName('ul')[0]. 
      getElementsByTagName('li')[0];

toRemove.parentNode.removeChild( toRemove );
<div id="emails">
<ul>
<li>email1</li>
<li>email2</li>
</ul>
</div>

<a href="#" onClick="deleteEmail()">click</a> 
<!--note that I made it so you actually invoke deleteEmail -->

我想刪除第一封電子郵件,我一直在嘗試這個:

function deleteEmail(){
    //I believe you meant emails =/
    var ul = document.getElementById('emails').getElementsByTagName('ul');
    ul.removeChild(ul.getElementsByTagName("li")[0]);
}

如果你把字符串“email#”變成一個鏈接......就像這樣:

<a href="" onClick="removeElement(this.parentNode);return false">email1</a>

具有與此類似的功能。

function removeElement(childElm) {
  var parentElm = childElm.parentNode;
  parentElm.removeChild(childElm);
}

雖然你可以使用removeElement()而不使用onClick,但我只是喜歡它允許的簡單性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM