我有一个页面,它只是尝试在javascript函数中执行以下操作:
document.getElementById("chatTable").innerHTML += "<tr><td colspan="3"> ⏎
<span color="purple">------------Switched to channel: " + channelName + ⏎
"------------</span></td></tr>";
这适用于我尝试过的所有其他浏览器(Firefox,Chrome,Safari,Android手机浏览器,iPhone浏览器),但在IE9中则不行。是的,我确实有一个带有 ID chatTable
的表,并且确实设置了 channelName
变量。我知道我可能能够使用 DOM 实际为表对象附加一个表行(我认为它insertRow()
或其他什么),但现在它只是作为一个原则问题,它一直让我发疯。我尝试将+=
更改为仅=
并且没有运气。我还尝试在javascript中将表设置为自己的变量,然后尝试编辑innerHTML,但仍然没有运气。哦,我确实有:
<!DOCTYPE HTML>
在我的页面中。我做错了什么?!
.innerHTML
或.outerHTML
与以下任何元素一起使用:COL、COLGROUP、FRAMESET、HTML、STYLE、TABLE、TBODY、TFOOT、THEAD、TITLE 或 TR。
请参阅动态生成表以使用 Microsoft 的表对象模型在 Internet Explorer 中操作表。
我想这可能会在未来的IE版本中发生变化,但这就是你现在剩下的。
除了 Jim 的答案之外,当您附加 HTML 时,您还会销毁并重建现有表。 即使在允许您执行此操作的浏览器中,通常更好的添加行的解决方案是:
var table = document.getElementById("chatTable"),
row = table.insertRow(-1), //-1 means at end
cell = row.insertCell(0),
span = document.createElement("span");
span.style.color = "purple";
span.appendChild(document.createTextNode("------------Switched to channel: " + channelName + "------------"));
cell.colSpan = 3;
cell.appendChild(span);
row.appendChild(cell);
table.appendChild(row);
它通常更快,并且不会丢失附加到表中内容的任何现有事件处理程序。