web-dev-qa-db-ja.com

jquery-IE8で.forEach()が機能しない

作業中のプラットフォームの1つにこの小さな相互作用を作成しました- http://jsfiddle.net/S79qp/426/

IE8以外のすべてのブラウザーで正常に動作します。コンソールを実行すると、このセクションに問題があるようです...

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

必要なバージョンと互換性を持たせるために、誰かがIE8に優しい代替案を見せてもらえますか?

27
Milo-J

使用 - jQuery.eachメソッド

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();
});
37
Guffa

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]);
      }
    };
}

これは 予想どおり が組み込まれていないブラウザで動作します。

44
Chad Hedgcock

forEachは、IE 8ではサポートされていません。代わりに、通常のループを使用できます。

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

実際、forEachメソッドはIE9からのみ利用可能です。古いブラウザにサポートを提供するには、jQueryバージョン「each()」を使用する必要があります。

2
Laurent S.

私は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));
            });

これは私が長い一日の闘争の後に開発した解決策です

            $.each(data.children, function () {

                attachRel(this, '1' + (data.children.length > 1 ? 1 : 0));
            });
1
Magige Daniel