如何在IE8中使用以下内容?我假设从其他线程我使用if else语句。只是不确定它应采取的形式
提前致谢
document.addEventListener("DOMContentLoaded", function() {
var captions = document.getElementsByClassName("block1");
var newlabel = document.getElementsByClassName("block2");
for (var i = 0, c=captions.length; c>i; i++) {
captions[i].style.display = "none";
}
for (var i = 0, n=newlabel.length; n>i; i++) {
newlabel[i].style.display = "none";
}
})();
答案 0 :(得分:0)
有四个问题需要处理:
删除不正确的()
(即使不使用IE8)。
解决方案:只需删除它们。
必要时使用attachEvent
代替addEventListener
。
解决方案:根本不要使用事件,也不要检测你拥有的事件。
处理IE8没有DOMContentLoaded
的事实。
解决方案:将脚本放在HTML的末尾而不是使用事件。或者使用window.load
,但这种情况发生得非常晚。
处理IE8没有getElementsByClassName
的事实。
解决方案:改为使用querySelectorAll
,IE8
同样,处理#2和#3的最简单方法是将代码简单地放在文档最末端的脚本标记中,就在结束</body>
元素之前。然后你根本不必使用事件,只需运行代码;元素将存在并准备好编写脚本:
<!-- content... -->
<script>
(function() {
var i, c, n;
var captions = document.querySelectorAll(".block1");
var newlabel = document.querySelectorAll(".block2");
for (i = 0, c = captions.length; c > i; i++) {
captions[i].style.display = "none";
}
for (i = 0, n = newlabel.length; n > i; i++) {
newlabel[i].style.display = "none";
}
})();
</script>
</body>
</html>
如果你真的想让它基于事件,那么:
function handler() {
var i, c, n;
var captions = document.querySelectorAll(".block1");
var newlabel = document.querySelectorAll(".block2");
for (i = 0, c = captions.length; c > i; i++) {
captions[i].style.display = "none";
}
for (i = 0, n = newlabel.length; n > i; i++) {
newlabel[i].style.display = "none";
}
}
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded", handler);
}
else if (window.attachEvent) {
window.attachEvent("onload", handler);
}
(请注意,在这两种情况下,我只在函数的顶部声明了i
,c
和n
一次。这就是您的代码所做的事情,因为{ {3}},所以...)