我有一个appendChild JS函数,除IE之外的所有浏览器都能很好地工作。
我正在使用JS数组并将此数据附加到表中。
http://jsfiddle.net/2waZ2/51/有代码 - 并且在小提琴中工作正常!
我已经查看了其他答案,他们的问题似乎与我的有点不同。也许我只需要做一个tbody,但我真的不知道该怎么做。
什么是最好的方法来重写这个在Ie工作?
在小提琴中添加代码部分:
var row = document.createElement('tr');
row.innerHTML = displayArrayAsTable(QR4, 24, 25);
document.getElementById('mytable').appendChild( row ) ;
function displayArrayAsTable( array, from, to ) {
var array = array || [],
from = from || 0,
to = to || 0;
var html = '';
if ( array.length < 1 )
{
return;
}
if ( to == 0 )
{
to = array.length - 1;
}
for ( var x = from; x < to + 1; x++ )
{
html += '<td>' + array[x] + '</td>';
}
return html;
}
答案 0 :(得分:2)
最好的方法是使用insertRow
[MDN]:
var row = document.getElementById('mytable').insertRow(-1);
row.innerHTML = displayArrayAsTable(QR4, 24, 25);
关于tBody
:是的,这可能是问题所在。浏览器总是生成tBody
元素,无论是否在HTML中指定。
也许您可以通过将新行添加到此tBody
元素来解决您的问题:
document.getElementById('mytable').tBodies[0].appendChild( row );
但我记得读过IE在使用普通DOM操作方法操作表时遇到问题。在这种情况下是否也适用,我不知道。 insertRow
在任何情况下都应该有用。
更新:事实上,IE似乎不喜欢用td
附加innerHTML
个元素。解决方案是将row
作为参数传递给displayArrayAsTable
并使用insertCell
[MDN]创建新的单元格。
更新2:例如,你可以这样做:
for ( var x = from; x < to + 1; x++ )
{
var cell = row.insertCell(-1);
cell.innerHTML = array[x];
}
其中row
是函数的第四个参数,并调用为:
var row = document.getElementById('mytable').insertRow(-1);
displayArrayAsTable(QR4, 24, 25, row);