在js中如何实现对的直接克隆?

ntxs 2005-12-23 10:26:19
我在js克隆的时候发现了这样的怪问题: 代码如下

<table width="400" border="1" cellspacing="0" cellpadding="0" id="table1">
<tbody id="tbId">
<tr id="trId">
<td height="25">网友留言列表:</td>
</tr>
</tbody>
</table>

在这种情况下:
var node = document.getElementById("tbId").cloneNode(true);//克隆tbody
var parNode = document.getElementById("table1");//取得table
parNode.insertBefore(node,parNode.firstChild);//插入
可以成功。。。


但是 如果去掉HTML中的 tbody标签对tr直接克隆的话,就没有效果:代码如下
<table width="400" border="1" cellspacing="0" cellpadding="0" id="table1">
<tr id="trId">
<td height="25">网友留言列表:</td>
</tr>
</table>
在这种情况下:
var node = document.getElementById("trId").cloneNode(true);//克隆tbody
var parNode = document.getElementById("table1");//取得table
parNode.insertBefore(node,parNode.firstChild);//插入
没有改变页面。

请问这是什么原因? 难道非要加tbody吗?

请高手帮忙解答。谢谢大家。
...全文
297 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ntxs 2005-12-23
  • 打赏
  • 举报
回复
谢谢楼上各位。
meizz 2005-12-23
  • 打赏
  • 举报
回复
用 mergeAttributes 将所有的属性都拷贝过去,这个拷贝才是最准确的拷贝
hbhbhbhbhb1021 2005-12-23
  • 打赏
  • 举报
回复
<table width="400" border="1" cellspacing="0" cellpadding="0" id="table1">
<tr id="trId">
<td height="25">网友留言列表:</td>
</tr>
</table>

<script language=javascript>
var node = document.getElementById("trId").cloneNode(true);//克隆tbody
var parNode = document.getElementById("table1").childNodes[0];//取得table
parNode.insertBefore(node,parNode.firstChild);//插入
</script>
hbhbhbhbhb1021 2005-12-23
  • 打赏
  • 举报
回复
因为table中就算你不加tbody在其中也是存在tbody的
多加个childNodes[0]就可以了
var parNode = document.getElementById("table1").childNodes[0];//取得table
parNode.insertBefore(node,parNode.firstChild);//
你可以看下table的innerHTML就知道了
alert(document.getElementById("table1").innerHTML)

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧