该对象不管理每个属性

时间:2018-06-06 08:22:01

标签: javascript arrays foreach

我有一个脚本使用方法forEach在某些Firefox浏览器上工作但从不在IE11上工作。

错误是:对象没有管理每个属性

var clearContent = function clearContent() {
  var allDistricts = document.querySelectorAll(".district");
  allDistricts.forEach(function(item) {
    item.style.display = "none";
  });
};

我可以轻松地替换每个方法吗? 感谢

2 个答案:

答案 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);
    }
  };
}