节点问题.....

来源:9-22 编程练习

Mr_Jp黎

2017-07-07 11:23

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

为什么这样写不行

写回答 关注

3回答

  • 油炸小香瓜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]);

    }

    Mr_Jp黎 回复油炸小香瓜3...

    什么东西

    2017-07-12 17:25:23

    共 3 条回复 >

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

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

    Mr_Jp黎

    所以,我本来也是这么想的,后来好像知道了。。tr是个变量,我想table下删除tr,但是括号里是变量,并不是tr标签,所以还得获取到tr的节点

    2017-07-08 22:32:09

    共 1 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468195 学习 · 21891 问题

查看课程

相似问题