Javascript如何使用附加事件使此脚本与IE8及以下版本兼容

Javascript如何使用附加事件使此脚本与IE8及以下版本兼容,javascript,internet-explorer-8,Javascript,Internet Explorer 8,我如何让以下内容在IE8中工作?我假设从其他线程使用if-else语句。只是不确定它应该采取什么形式 提前谢谢 document.addEventListener("DOMContentLoaded", function() { var captions = document.getElementsByClassName("block1"); var newlabel = document.getElementsByClassName("block2"); for (v

我如何让以下内容在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";
    }

})();

有四个问题需要处理:

即使在不使用IE8的情况下,也要删除末尾的错误代码

解决方案:只需移除它们

必要时使用attachEvent而不是addEventListener

解决方案:根本不使用事件,也不检测您拥有的事件

处理IE8没有加载DOMContentLoaded的事实

解决方案:将脚本放在HTML的末尾,而不是使用事件。或者使用window.load,但这种情况发生得很晚

处理IE8没有getElementsByClassName的事实

解决方案:改用querySelectorAll,IE8确实有

同样,处理2和3的最简单方法是简单地将代码放在文档末尾的脚本标记中,就在结束元素之前。那么你根本不必使用事件,只需运行代码;元素将在那里并准备好编写脚本:

<!-- 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>

请注意,在这两种情况下,我只在函数顶部声明了I、c和n一次。这就是您的代码所做的,因为,所以…

感谢您如此快速的响应。基于事件的脚本工作得最好,因为页面中有很多其他js元素和延迟加载,CMS没有给我添加脚本的选项。
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);
}