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

节点问题.....

// 创建删除函数
     function del(obj){
         var tr=obj.parentNode.parentNode.parentNode;
         tr.removeChild(tr);
     }

为什么这样写不行

提问者:Mr_Jp黎 2017-07-07 11:23

个回答

  • 油炸小香瓜3192649
    2017-07-11 11:36:37

    使用 this 获取当前点击的行即可,案例如下:


    <!DOCTYPE  HTML>

    <html >

    <head>

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

      <title>无标题文档</title>

    </head>

    <body>

    <table>

    <tr onclick="findIndex(this)">

    <th>Month</th>

    <th>Savings</th>

    </tr>

    <tr onclick="findIndex(this)">

    <td>January</td>

    <td>$100</td>

    </tr>

    <tr onclick="findIndex(this)">

    <td>may</td>

    <td>$1000</td>

    </tr>

    </table>

    <script type="text/javascript">

    // 获取当前点击的位置

    function findIndex(obj){

    var num;

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

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

    if(d[i] === obj){

    num = i;

    }

    }

    console.log(num);

    }

    </script>

    </html>


  • 油炸小香瓜3192649
    2017-07-07 15:51:05

    粘贴代码的第 4 行,removeChild() 是删除子节点,你写的是 tr 删除 tr,即自己删除自己,该操作不可执行

    改为如下代码即可:


    function del(obj){

             var tr=obj.parentNode.parentNode.parentNode;

             tr.removeChild(tr.childNodes[0]);

    }

  • QINGMU青木
    2017-07-07 15:09:23

    obj所在的元素节点是td,td的父节点是tr,tr的父节点是table,要删除的是table下的子节点,所以。。