Jquery - .forEach()在IE8中不起作用

时间:2013-04-24 08:20:39

标签: javascript jquery html internet-explorer-8

我为其中一个平台创建了这个小小的互动 - http://jsfiddle.net/S79qp/426/

除了IE8之外,它在所有浏览器中都能正常工作。当我运行控制台时,似乎是这部分它出现了问题......

Array.prototype.forEach.call(l, function(item) {
        a.push(jQuery(item).text());
   });

有人可以向我展示一个IE8友好的替代方案,以便我可以使其兼容所需的版本吗?

5 个答案:

答案 0 :(得分:44)

如果你想要的只是IE8中的forEach()

if (typeof Array.prototype.forEach != 'function') {
    Array.prototype.forEach = function(callback){
      for (var i = 0; i < this.length; i++){
        callback.apply(this, [this[i], i, this]);
      }
    };
}

这将在任何没有内置的浏览器中显示as expected

答案 1 :(得分:37)

使用jQuery.each method

jQuery.each(l, function(index, item){
  a.push(jQuery(item).text());
});

如果目标数组从开始为空,则可以使用jQuery.map method来代替:

var a = jQuery.map(l, function(item){
  return jQuery(item).text();
});

答案 2 :(得分:3)

IE 8中不支持

forEach,而是可以使用常规循环:

for ( var i = 0; i < myArray.length; i++ ) {
   // code
}

答案 3 :(得分:2)

确实,forEach方法仅适用于IE9。您应该使用jQuery版本“each()”以便为旧浏览器提供支持。

答案 4 :(得分:1)

我和IE8有同样的问题,这就是我解决它的方法!

首先想要循环并从 JSON数组对象获取数据。 看看在Firex,chrome和最新的IE浏览器中运行良好的原版,但不是IE8

&#13;
&#13;
            data.children.forEach(function(item) {
              //javascript: console.log(item);
              console.log(data.children);
              attachRel(item, '1' + (data.children.length > 1 ? 1 : 0));
            });
&#13;
&#13;
&#13;

这是我经过漫长的一天斗争后开发的解决方案

&#13;
&#13;
            $.each(data.children, function () {

                attachRel(this, '1' + (data.children.length > 1 ? 1 : 0));
            });
&#13;
&#13;
&#13;