JQuery -.forEach() не работает в IE8
Я создал это небольшое взаимодействие для одной из платформ на работе - http://jsfiddle.net/S79qp/426/
Он отлично работает во всех браузерах отдельно от IE8. Когда я запускаю консоль, кажется, что этот раздел имеет проблемы с...
Array.prototype.forEach.call(l, function(item) {
a.push(jQuery(item).text());
});
Может ли кто-нибудь показать мне альтернативу IE8, чтобы я мог сделать ее совместимой для требуемых версий?
Ответы
Ответ 1
Используйте метод jQuery.each
:
jQuery.each(l, function(index, item){
a.push(jQuery(item).text());
});
Если целевой массив пуст от начала, вы можете использовать метод jQuery.map
для этого:
var a = jQuery.map(l, function(item){
return jQuery(item).text();
});
Ответ 2
Если все, что вам нужно, это forEach()
в IE8:
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]);
}
};
}
Это приведет к как ожидалось в любом браузере, который не имеет встроенного модуля.
Ответ 3
Действительно, метод forEach доступен только из IE9. Вы должны использовать версию jQuery "each()", чтобы предлагать поддержку старым браузерам.
Ответ 4
forEach не поддерживается в IE 8, вместо этого вы можете использовать регулярный цикл:
for ( var i = 0; i < myArray.length; i++ ) {
// code
}
Ответ 5
У меня была такая же проблема с IE8, и вот как я ее решил!
Прежде всего, нужно зациклиться и получить данные из объекта JSON array.
Взгляните оригинал, который хорошо работает в 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));
});