Javascript 使用map进行迭代,为什么不起作用?

Javascript 使用map进行迭代,为什么不起作用?,javascript,loops,Javascript,Loops,javascript代码如下所示: function hidepre() { var pre = this.getElementsByTagName("pre")[0] if (pre.style.display === "none") { pre.style.display = "block"; } else { pre.style.display = "none"; } } function hidepreall() {

javascript代码如下所示:

function hidepre() {
    var pre = this.getElementsByTagName("pre")[0]
    if (pre.style.display === "none") {
        pre.style.display = "block";
    } else {
        pre.style.display = "none";
    }
}
function hidepreall() {
    var prewraps = document.getElementsByClassName("prewrap");
    if(prewraps.length > 0) {
        for (var i = 0; i < prewraps.length; i++) {
            var prewrap = prewraps[i];
            prewrap.onclick = hidepre;
        }
    }
}
window.onload = hidepreall;
它停止工作了


两种小提琴在两种情况下都不起作用

for in循环的
不是用来循环数组中的条目或类似数组的东西(从
getElementsByClassName
返回的是一个类似数组的对象,称为
NodeList
)。它用于循环遍历对象属性的可枚举名称。在主机提供的对象(如
NodeList
)上使用
for in
)不能保证有效

使用一个简单的
for
循环,或者将
节点列表
转换为一个数组,并在其上使用
forEach
(您可以在剩下的几个没有它的浏览器上填充
forEach
)。下面是一个例子:

Array.prototype.slice.call(prewraps, 0).forEach(function(element) {
    // ...use the element here
});
(切片是从任何类似数组的对象中创建数组的方便方法。)

更多关于数组循环的信息

更多关于我的博客中的<代码>

Array.prototype.slice.call(prewraps, 0).forEach(function(element) {
    // ...use the element here
});