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

这段代码哪里错了 为什么新添的元素删不了?

<!DOCTYPE html>

<html>

 <head>

  <title> new document </title>  

  <meta http-equiv="Content-Type" content="text/html; charset=gbk"/>   

  <script type="text/javascript"> 

  // 鼠标移动改变背景,可以通过给每行绑定鼠标移上事件和鼠标移除事件来改变所在行背景色。

  window.onload=function(){

  var tr=document.getElementsByTagName('tr');

  for(var i=0;i<tr.length;i++){

  tr[i].onmouseover=function(){this.style.backgroundColor=' #f2f2f2'};

  tr[i].onmouseout=function(){this.style.backgroundColor='#fff'};

  }

  }    

    // 编写一个函数,供添加按钮调用,动态在表格的最后一行添加子节点;  

     var num=2;

    function add(){

    num++;

    var table=document.getElementById('table');

    var ntr=document.createElement('tr');

    var ntd1=document.createElement('td');

    var ntd2=document.createElement('td');

    var ntd3=document.createElement('td');

    var tx=document.createElement('input');

    var ta=document.createElement('a');

    tx.type='text';

    ta.innerHTML='删除';

    ta.href='javascript:;'

    ta.onclick='del(this)';                                 这里修改成ta.setAttribute("onclick","del(this)”)为什么就没问题了?

    if(num<10){ntd1.innerHTML='xh00'+num;}

    else if(num>=10&&num<100){ntd1.innerHTML='xh0'+num;}

    else{ntd1.innerHTML='xh'+num;}

    ntd2.appendChild(tx);

    ntd3.appendChild(ta);

    ntr.appendChild(ntd1);

    ntr.appendChild(ntd2);

    ntr.appendChild(ntd3);

    table.appendChild(ntr);

    var tr=document.getElementsByTagName('tr');

  for(var i=0;i<tr.length;i++){

  tr[i].onmouseover=function(){this.style.backgroundColor=' #f2f2f2'};

  tr[i].onmouseout=function(){this.style.backgroundColor='#fff'};

  }

    }      

   // 创建删除函数

      function del(obj){

      var tr=obj.parentNode.parentNode;

      tr.parentNode.removeChild(tr);

      }

这段代码哪里错了 为什么新添的元素删不了?

提问者:清风流光 2017-04-12 16:52

个回答

  • 清风流光
    2017-04-12 17:32:07

    ta.addEventListener('click',function(){this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode);})

    这样写好像标准 但我想调用已有的应该怎么办?