我有一个脚本使用方法forEach在某些Firefox浏览器上工作但从不在IE11上工作。
错误是:对象没有管理每个属性
var clearContent = function clearContent() {
var allDistricts = document.querySelectorAll(".district");
allDistricts.forEach(function(item) {
item.style.display = "none";
});
};
我可以轻松地替换每个方法吗? 感谢
答案 0 :(得分:2)
使用简单的for
循环:
var clearContent = function clearContent() {
var allDistricts = document.querySelectorAll('.district');
for (var i=0; i<allDistricts.length; i++) {
allDistricts[i].style.display = 'none';
}
};
答案 1 :(得分:2)
NodeList.querySelectorAll
是一个新功能,在过时的浏览器上不受支持。 (querySelectorAll
返回NodeList
)
MDN says它首先得到Chrome 51和FF 50的支持,这些版本仅在几年前发布(当然,它在2013年发布的IE上根本不受支持)
对于polyfill,您可以使用:
if (window.NodeList && !NodeList.prototype.forEach) {
NodeList.prototype.forEach = function (callback, thisArg) {
thisArg = thisArg || window;
for (var i = 0; i < this.length; i++) {
callback.call(thisArg, this[i], i, this);
}
};
}