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

为什么使用了3次appendChild,结果却只创建了1个子节点?

<!DOCTYPE html>

<html>

 <head>

  <title> new document </title>  

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

  <script type="text/javascript"> 

  

     

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

    function append(){

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

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

     newtd.innerHTML="table";

     newtr.appendChild(newtd);

     newtr.appendChild(newtd);

     newtr.appendChild(newtd);


     document.getElementsByTagName("table")[0].appendChild(newtr);

        

    }




  </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:void();" onclick="remove(this)">删除</a></td>   <!--在删除按钮上添加点击事件  -->

  </tr>


  <tr>

<td>xh002</td>

<td>刘小芳</td>

<td><a href="javascript:void();" onclick="remove(this)">删除</a></td>   <!--在删除按钮上添加点击事件  -->

  </tr>  


  </table>

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

 </body>

</html>



如上,使用了3次appendChild,实际运行点击时,却只创建了1个子节点:

http://img1.sycdn.imooc.com//596bc46b0001549810380226.jpg



正在回答

6 回答

你三次添加的单元格都是同一个名字,怎么可能有用,就好比你元素属性写三次,那也只有一次有用,先创建三个不同的td再添加

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

每次引用对象时,其实都是调用对象的内存地址,所以在循环中对一个对象添加多次,其实都是添加的同一个对象的内存地址,实际对象的数量并没有增加,就好比你对你女朋友连说六次爱你,不等于就有6个女朋友吧?所以必须在每次循环时都重新创建一个新的对象,这样系统就会为这个新对象分配新的内存空间,然后再添加到父元素中才算是真正的添加。

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

我也是不明白这个诶,你现在明白了吗?

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

我理解的是节点里面是已经包括了三个appendchild了,你说只创建了一个子节点是怎么看出来的?

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

tr的子节点是3个td,tr的的parentnode是table,是哪里不对呢?你的意思是为什么要重复写三个appendChild?

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

吉夫 提问者

不是,我的意思是我使用了三次appendChild,但实际运行却只创建了一个子节点而不是三个,觉得很不解
2017-07-17 回复 有任何疑惑可以回复我~

<tr>

<td>xh001</td>

<td>王小明</td>

<td><a href="jav

,你看看tr下面是不是有三栏,所以需要插入appendChild就是三个

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

吉夫 提问者

不是,我明白要添加三个子节点,源代码中我也的确用了3次appendChild,但是实际运行时,却只添加了一个子节点,十分不解
2017-07-17 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么使用了3次appendChild,结果却只创建了1个子节点?

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