【发布时间】:2011-02-23 04:24:29
【问题描述】:
此 innerHTML 代码在 IE8 中无法可靠运行: (但在 IE6 IE7 FF Opera Chrome Safari 中工作) (通过不可靠地工作,我的意思是我已经将此代码放在 onmouseover 处理程序中的各种元素上,有时它会在将鼠标悬停在给定元素上时更改文本,有时它不会 - 没有模式 - 无论它会工作还是似乎不是完全随机的)
document.getElementById("mydiv").innerHTML="some text";
DOM 方法(删除和重新添加带有更新文本的 div)也没有帮助。
所以我在上面的代码之后立即添加了它并修复了它:
document.styleSheets[0].addRule("#mydiv:after", "content: ' ';");
使用条件 cmets 我将第二行代码识别为仅适用于 IE8
我很肯定这会为人们节省很多时间,因为我已经在这上面浪费了很多时间!
甚至 Jquery.text() 也没有帮助!
我在别处读到,innerHTML 将更新 DOM,但可能无法更新屏幕元素。我相信 CSS 规则有效,因为它会动态更改 #mydiv 的 after 伪类的内容,因此需要更新 mydiv 的内容,从而更新屏幕(innerHTML 未能做到)。
但是,如果有人有更好的解决方案,我很乐意听到 - 谢谢
按要求编辑
【问题讨论】:
-
欢迎来到 SO。您能具体说明在这种情况下“不可靠工作”的含义吗?为什么 CSS 规则会修复任何不起作用的东西?错误报告和修复都很好,但它们需要一些基础工作。
-
你确定你没有任何重复的 id 或任何东西吗?你知道
getElementById("mydiv")实际上返回了正确的DOMElement吗?
标签: javascript html css xhtml innerhtml