Javascript 使用map进行迭代,为什么不起作用?
javascript代码如下所示: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() {
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
});