2011-02-06 40 views
0

我有一个HTML表格,只有几行。Javascript替换孩子?

我最初给了一些表行(TR)的ID,我会用javascript来设置这些表行的一些INNERHTML与一些新的动态内容。

但是,Internet Explorer不喜欢这个,并给出'未知的运行时错误',因为我试图设置一个内联元素的INNERHTML。

所以现在,我试图用一个新的代替整个表行的孩子。我不能简单地appendChild,因为我需要新的表格行与原始表格位于相同的位置(模仿好像这个表格行的内容在实际中已经被改变,整个行被'替换')。

希望有人对此有一个解决方案(我在考虑a)获取孩子位置b)删除原始表格行和c)在A中找到的儿童位置插入新的表格行)。也许还有更简单更好的解决方案?会喜欢一些输入。

干杯!

回答

4

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'; 

题外话:像这样的问题是,为什么我通常建议使用库像jQueryPrototypeYUIClosure,或any of several others平滑过度浏览器古怪的一部分并提供DOM本身不提供的其他基本功能。这可以让你专注于你正在解决的实际问题,而不是浏览器陷阱的奥秘。

0

这是innerHTML,而不是INNERHTML

+0

确实如此,但这不是问题所在。 – 2011-02-06 10:26:33

0

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