标签:
前两天在在页面时需要动态创建table,由于需要动态生成行,于是偷懒使用了innerHTML属性
自己习惯使用FF,无意中使用IE打开竟发现报错了。
debug了一下发现是innerHTML搞得鬼。
在MSDN下找到了下面的描述:
https://msdn.microsoft.com/en-us/library/ms533897%28v=vs.85%29.aspx
The innerHTML property is read-only on the col, colGroup, frameSet, html, head, style, table, tBody, tFoot, tHead, title, and tr objects.
即在上述元素中,innerHTML属性是为只读的,我们不能直接使用innerHTML来改变它们的行为。
解决方法:
function setTableInnerHTML(table, html) { if (navigator && navigator.userAgent.match(/msie/i)) { var temp = table.ownerDocument.createElement(‘div‘); temp.innerHTML = ‘<table><tbody>‘ + html + ‘</tbody></table>‘; if (table.tBodies.length == 0) { var tbody = document.createElement("tbody"); table.appendChild(tbody); } table.replaceChild(temp.firstChild.firstChild, table.tBodies[0]); } else { table.innerHTML = html; } }
庆幸的是,此问题在IE10以上版本已经得到修复
标签:
原文地址:http://www.cnblogs.com/deryck/p/4460091.html