为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我新添加的行中的“”onclick"可以起作用,而原本两行的“onclick”不起作用?

<!DOCTYPE html>

<html>

 <head>

  <title> new document </title>  

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

  <script type="text/javascript"> 

    'use strict';

      window.onload = function(){

                  

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

       HighLight();

     }

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

     function addLine(obj){

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

        var newTr = document.createElement("tr");

        var newTd = document.createElement("td");

        newTd.innerHTML="<input type='text' style='width:40px'/>";

        newTr.appendChild(newTd);

        

        newTd = document.createElement("td");

        newTd.innerHTML="<input type='text' style='width:40px'/>";

        newTr.appendChild(newTd);

        

        newTd = document.createElement("td");

        newTd.innerHTML="<a href='javascript:;' onclick='deleteLine(this)'>删除</a>";

        newTr.appendChild(newTd);

        

        table.appendChild(newTr);

        HighLight();

     }  

   


     // 创建删除函数

     function deleteLine(obj){

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

        var deleteTr = obj.parentNode.parentNode;

        table.removeChild(deleteTr);

    }

        

    // 背景色函数    

     function HighLight(){

        var lightTr = document.getElementsByTagName("tr");

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

            lightTr[i].onmouseover = function(){

                this.style.backgroundColor="#f2f2f2";

            }

            lightTr[i].onmouseout =  function(){

                this.style.backgroundColor="#fff";

            }

        }

     }

  </script> 

 </head> 

 <body> 

  <table border="1" width="50%" id="table">

  <tr>

<th>学号</th>

<th>姓名</th>

<th>操作</th>

  </tr>  


  <tr>

<td>xh001</td>

<td>王小明</td>

<td>

        <a href='javascript:;' onclick='deleteLine(this)'>删除</a>//这个“onclick”不起作用

        </td>   <!--在删除按钮上添加点击事件  -->

  </tr>


  <tr>

<td>xh002</td>

<td>刘小芳</td>

<td>

        <a href='javascript:;' onclick='deleteLine(this)'>删除</a>//这个“onclick”不起作用

        </td>   <!--在删除按钮上添加点击事件  -->

  </tr>  


  </table>

  <input type="button" value="添加一行" onclick="addLine()"/>   <!--在添加按钮上添加点击事件  -->

 </body>

</html>


正在回答

2 回答

查看浏览器控制台可知:如果不显式指定表格行的位置,浏览器渲染表格时默认会把表格行放在tbody中,即tr的父元素不是table而是tbody。所以删除行的语句可改为:deleteTr.parentNode.removeChild(deleteTr)

0 回复 有任何疑惑可以回复我~
#1

beblueblue 提问者

非常感谢,不过不明白什么叫“不显式指定表格行的位置”?
2016-09-19 回复 有任何疑惑可以回复我~

 var table = document.getElementById("table");   改成var table = document.getElementById("table").lastChild;即是tbody

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么我新添加的行中的“”onclick"可以起作用,而原本两行的“onclick”不起作用?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信