我为其中一个平台创建了这个小小的互动 - http://jsfiddle.net/S79qp/426/
除了IE8之外,它在所有浏览器中都能正常工作。当我运行控制台时,似乎是这部分它出现了问题......
Array.prototype.forEach.call(l, function(item) {
a.push(jQuery(item).text());
});
有人可以向我展示一个IE8友好的替代方案,以便我可以使其兼容所需的版本吗?
答案 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(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)
forEach,而是可以使用常规循环:
for ( var i = 0; i < myArray.length; i++ ) {
// code
}
答案 3 :(得分:2)
确实,forEach方法仅适用于IE9。您应该使用jQuery版本“each()”以便为旧浏览器提供支持。
答案 4 :(得分:1)
我和IE8有同样的问题,这就是我解决它的方法!
首先想要循环并从 JSON数组对象获取数据。 看看在Firex,chrome和最新的IE浏览器中运行良好的原版,但不是IE8
data.children.forEach(function(item) {
//javascript: console.log(item);
console.log(data.children);
attachRel(item, '1' + (data.children.length > 1 ? 1 : 0));
});
&#13;
这是我经过漫长的一天斗争后开发的解决方案
$.each(data.children, function () {
attachRel(this, '1' + (data.children.length > 1 ? 1 : 0));
});
&#13;