先说一下我想要实现的功能,就是在一个ul 里面 点击某个li标签 就移除当前点击的li。
但是搞来搞去就是没能实现我想要的效果。
现在的问题如下
怎么用更直接的方法取得当前点击的li下标,for循环取下标是百度淘来的。
移除是可以用了,但是它不是按我点击的li移除 比如我点击2 它会删除3 or 4 不知道是不是if(e.target == children[i])这里判断不对
点击一次没效果,要点第二次才执行removeChild。
HTML结构
<ul id="box">
<li id="one" class="oneclass" data="2017">0</li>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
JS代码
document.getElementById("box").addEventListener("click",function(e) {
if(e.target && e.target.nodeName == "LI") {
var children = this.children; //获取ul里面的所有li元素集合
for(var i=0;i<children.length;i++){
if(e.target == children[i]) { //对比目标元素和li集合元素
//alert("目标元素的下标为:" + i); //输出目标元素的下标
document.getElementById(e.target.parentNode.id).removeChild(document.getElementById(e.target.parentNode.id).childNodes[i]);
return;
}
}
}
});