问答详情
源自:9-22 编程练习

9-22练习:删除函数

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>

为什么第一次点击的时候没有执行删除函数,点击第二次及以后就可以

提问者:非常有喜 2017-03-16 20:07

个回答

  • 套子里的海怪
    2017-03-19 12:36:49

    你点击添加一行的时候,多了一行,就是多了一个a,这个a是动态添加的,你的删除函数里面获取到的a是之前就存在的,之前才有2个a(索引值是0和1),动态添加的那个删除按钮的索引值是2,这时候他身上并没有点击事件,然而你点击过后,运行了removeEle函数,这时候获取到了新的a,就变成了3个,动态添加的a就有了点击事件,所以点第二次的时候就成了。

  • 极武者
    2017-03-16 20:50:42

    我说的不清楚,你就当一个提示吧

  • 极武者
    2017-03-16 20:48:36

    as.length的值是变化的,for每执行一次as.length的值就减一,而i值在增加,这样每次第一个数也就是数组[0]是变动的,也就造成无法一次删除,具体执行流程及原因你再琢磨一下看看。