我在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()和资源管理器之间冲突的经验吗?
答案 0 :(得分:6)
您必须将新的TR元素插入TBODY而不是直接插入TABLE。否则IE将不会显示/插入/不管它。
答案 1 :(得分:2)
尝试在您正在使用的<tbody>
内创建<table>
元素,然后附加到该元素而不是<table>
。
这是我会尝试的第一件事。我依稀记得,如果没有<tbody>
元素,Javascript对表的处理会很奇怪。
答案 2 :(得分:1)
slosd完美地回答了它,只是添加了一点:在IE7中也需要TBODY,但在IE8中则不需要。