prototype.js - 在IE 6下忽略了Element.insert(Element)?

时间:2009-06-02 20:50:39

标签: javascript internet-explorer internet-explorer-6 prototypejs

我在XP上使用IE 6(公司强制版),以及(主要是)Firefox 3.在这些中,我使用prototype.js库版本1.6.0.3制作DHTML表。

我有一个事件处理程序javascript代码来向表中添加一行,这在Firefox下工作正常,但在Internet Explorer下完全被忽略。我可以浏览MS“脚本调试器”中的代码(是的,我知道它已经过时并已弃用,但它可用),所以我知道事件正在被挂钩。

代码的形式如下:

var xTable = $( 'x_list')  // id of x...
var aRow = new Element( 'tr')
aRow.setAttribute( 'id', id)
. . .
var xEl = new Element( 'td')
. . .
aRow.insert( xEl)
. . .
// alert( aRow.inspect() )
// alert( xTable.inspect() )
debugger  // check insert() implementation under IE
xTable.insert( aRow)

还有其他人有过Element.insert()和资源管理器之间冲突的经验吗?

3 个答案:

答案 0 :(得分:6)

您必须将新的TR元素插入TBODY而不是直接插入TABLE。否则IE将不会显示/插入/不管它。

答案 1 :(得分:2)

尝试在您正在使用的<tbody>内创建<table>元素,然后附加到该元素而不是<table>

这是我会尝试的第一件事。我依稀记得,如果没有<tbody>元素,Javascript对表的处理会很奇怪。

答案 2 :(得分:1)

slosd完美地回答了它,只是添加了一点:在IE7中也需要TBODY,但在IE8中则不需要。