Javascript 移除id为的div中的ul中的li上的child?
我在网页上有以下代码:Javascript 移除id为的div中的ul中的li上的child?,javascript,dom,Javascript,Dom,我在网页上有以下代码: <div id="emails"> <ul> <li>email1</li> <li>email2</li> </ul> </div> <a href="#" onClick="deleteEmail()">click</a> 我对Javascript DOM有点陌生,所以如果有更好的方法,请告诉我 注意:我希望在不使用任何js框架的情况下执行此操作
<div id="emails">
<ul>
<li>email1</li>
<li>email2</li>
</ul>
</div>
<a href="#" onClick="deleteEmail()">click</a>
我对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]”中,i将为0表示空格,1表示电子邮件,2表示空格等。如果仅在
中安装,则应使用ul.getElementsByTagName('li')[i]。DOM节点的子节点包括文本和注释,而不仅仅是元素,因此,为了确定要删除的元素位于哪个索引,需要考虑它们。在您的情况下,
中第一个
的索引是1
“email”div的DOM如下所示:
DIV
text( whitespace )
UL
text ( whitespace )
LI
text (email1)
text ( whitespace )
LI
text (email2)
text ( whitespace )
text (whitespace)
也就是说,直接找到要删除的
然后删除它可能是最简单的方法
var toRemove = document.
getElementById('emails').
getElementsByTagName('ul')[0].
getElementsByTagName('li')[0];
toRemove.parentNode.removeChild( toRemove );
如果将字符串“email#”转换为链接。。。大概是这样的:
具有与此类似的功能
function removeElement(childElm) {
var parentElm = childElm.parentNode;
parentElm.removeChild(childElm);
}
虽然您可以在不使用onClick的情况下使用removelement(),但我喜欢它所允许的简单性。您的代码会产生任何可见的结果吗?在onClick开始时,您不需要“javascript:”,只有在href中才需要它。它还缺少函数调用-应该是deleteMail(),哦,是的,我输入了它,但忘了添加(),thanks@inkedmn,它给了我一个关于removeChild不是firebug上的ul方法的错误:/or onclick=“parentNode.removeChild(this)”这也非常有用,我一定会使用基于此的解决方案。谢谢您的额外解释,非常有用!
<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]);
}
function removeElement(childElm) {
var parentElm = childElm.parentNode;
parentElm.removeChild(childElm);
}