非常有喜
2017-03-16 20:07
function removeEle(){
var t=document.getElementsByTagName('tbody')[0];
var as=document.getElementsByTagName('a');
for(var i=0;i<as.length;i++){
as[i].onclick=function(e){
console.log(this.parentNode);
t.removeChild(this.parentNode.parentNode);
}
}
}
<td><a href="javascript:;" onclick='removeEle()'>删除</a></td>
为什么第一次点击的时候没有执行删除函数,点击第二次及以后就可以
你点击添加一行的时候,多了一行,就是多了一个a,这个a是动态添加的,你的删除函数里面获取到的a是之前就存在的,之前才有2个a(索引值是0和1),动态添加的那个删除按钮的索引值是2,这时候他身上并没有点击事件,然而你点击过后,运行了removeEle函数,这时候获取到了新的a,就变成了3个,动态添加的a就有了点击事件,所以点第二次的时候就成了。
我说的不清楚,你就当一个提示吧
as.length的值是变化的,for每执行一次as.length的值就减一,而i值在增加,这样每次第一个数也就是数组[0]是变动的,也就造成无法一次删除,具体执行流程及原因你再琢磨一下看看。
JavaScript进阶篇
468060 学习 · 21891 问题
相似问题