javascript - 关于JS 事件委托操作ul li标签的问题
问题描述
先说一下我想要实现的功能,就是在一个ul 里面 点击某个li标签 就移除当前点击的li。
但是搞来搞去就是没能实现我想要的效果。
现在的问题如下
怎么用更直接的方法取得当前点击的li下标,for循环取下标是百度淘来的。
移除是可以用了,但是它不是按我点击的li移除 比如我点击2 它会删除3 or 4 不知道是不是if(e.target == children[i])这里判断不对
点击一次没效果,要点第二次才执行removeChild。
HTML结构
<ul id='box'> <li 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; }} }});
问题解答
回答1:document.querySelector(’#box’).addEventListener(’click’,function(e){ if(e.target.nodeName=='LI'){e.target.parentNode.removeChild(e.target); }});回答2:
<!DOCTYPE HTML><html><ul id='box'> <li data='2017' onclick='removeli(this);'>0</li> <li onclick='removeli(this);'>1</li> <li onclick='removeli(this);'>2</li> <li onclick='removeli(this);'>3</li> <li onclick='removeli(this);'>4</li></ul><script>function removeli(node){node.parentNode.removeChild(node);}</script></html>
相关文章:
1. python3.5 urllib.parse.unquote 乱码2. css - 前端flex布局嵌套内层的布局不起作用?3. html按键开关如何提交我想需要的值到数据库4. android - 求 360浏览器 百度浏览器 搜狗浏览器的最新启动类名5. css - ul ol前边的标记如何调整样式呢6. Android 高德地图如何实现拖动平移地图时地图上的小图标不动?7. javascript - 如何通过参数获取Object的子节点?8. javascript - 微信小程序 wx.downloadFile下载文件大小有限制吗9. html5 - HTML代码中的文字乱码是怎么回事?10. javascript - 在html中写了个<video>视频,浏览器却是一片空白为什么呢?360浏览器?