Javascript替换孩子?

Posted

技术标签:

【中文标题】Javascript替换孩子?【英文标题】:Javascript replace child? 【发布时间】:2011-06-22 05:03:50 【问题描述】:

我有一个带有几行的 html 表格。

我最初为其中一些表格行 (TR) 提供了一个 ID,然后我会使用 javascript 为其中一些表格行设置一些新的动态内容的 INNERHTML。

但是,Internet Explorer 不喜欢这样并给出“未知的运行时错误”,因为我正在尝试设置内联元素的 INNERHTML。

所以现在,我尝试用一​​个新的子行替换整个表行子行。我不能简单地 appendChild,因为我需要新的表格行与原始表格行位于相同的位置(模拟好像只是这个表格行的内容已被更改,而实际上,整行正在被“替换”)。

希望有人对此有解决方案(我在想 a)获取子位置 b)删除原始表格行和 c)在 A 中找到的子位置插入新表格行)。也许还有更简单更好的解决方案?希望有一些意见。

干杯!

【问题讨论】:

【参考方案1】:

IE 不太喜欢通过innerHTML 操作表格。你可以这样做:

var oldrow = document.getElementById('the_id');
var newrow = document.createElement('tr');

// add cells to the new row
var newcell = document.createElement('td');
newcell.innerHTML = "content";
newrow.appendChild(newcell);
// ... ... ...

// Replace the old row with the new one:
oldrow.parentNode.insertBefore(newrow, oldrow);
oldrow.parentNode.removeChild(oldrow);
newrow.id = 'the_id';

题外话:像这样的问题是我通常建议使用 jQuery、Prototype、YUI、Closure 或 any of several others 之类的库进行平滑处理的部​​分原因超越浏览器的怪异之处,并提供 DOM 本身没有提供的其他基本功能。这让您可以专注于您正在解决的实际问题,而不是浏览器陷阱的奥秘。

【讨论】:

【参考方案2】:

这是innerHTML,而不是INNERHTML

【讨论】:

没错,但这不是问题所在。【参考方案3】:

决定在当前行之后追加一个子行,并删除旧行。我能想到的最有效的方法。

【讨论】:

以上是关于Javascript替换孩子?的主要内容,如果未能解决你的问题,请参考以下文章

在javascript中选择第一个div孩子的第二个孩子[重复]

javascript 得到孩子索引

javascript js - 删除所有孩子

javascript 从孩子发出事件,听父母vujs

超过孩子时触发 JavaScript mouseout

div成为前一个div的孩子? - CSS 的怪癖? Javascript? [复制]