0

に例外私はすなわち互換性のために私のウェブサイトをテストだし、すぐに私は問題の過多に実行します。予想される ';'すなわち(JavaScriptやjQueryの)

DOM7011: The code on this page disabled back and forward caching. For more information, see: http://go.microsoft.com/fwlink/?LinkID=291337 
webshop.html 
HTML1300: Navigation occurred. 
webshop.html 
SCRIPT1004: Expected ';' 
main.js (16,18) 

私はとほとんど心配この時点で、私のコードをチェックするたびにそれがあるので、期待されていません。あなたはあなたのコードをtranspile(例えばwith Babel)または使用することができますいずれか

enter image description here

+0

IEは 'for ... of'をサポートしていません。それだけです。 – MaxArt

+0

それから何が代わりになりますか? – Vocaloidas

+0

それに答えを追加します。 – MaxArt

答えて

1

IE doesn't support for..of、ので、古き良きforEach

this.cartShop.forEach(function(item) { 
    if (...) { ... } 
}, this); 

更新:私はif内部で今では見ていますブロックには早く機能を打ち破るためにreturnというステートメントがあります。それが私が提案したコードが異なる動作をする理由です。予期しない動作やコードの重複を招くため、このようなアプローチはお勧めしません。通常は、breakを使用してループから抜け出す。

私はアイテムがカートにある場合は、あなたが最初にチェックされている参照してください。あなたがfindを使用してそれを行うことができます。

var item = this.cartShop.find(function(item) { 
    return item.name === name && ... 
}); 

if (item) { 
    item.quantity += quantity; 
} else { 
    item = new this.Item(...); 
    this.cartShop.push(item); 
} 

this.saveLocalCart(); 

残念ながら、findは再びfor..ofすることができますへIEで利用できるが、逆ではないです単にpolyfillを入力してください。

for (var i = 0; i < this.cartShop.length; i++) { 
    var item = this.cartShop[i]; 
    if (...) { ... } 
} 

、より詳細な読みにくく、それでも効果:別の方法として、あなたは常に古典forループを使用して古いコードを使用することができます。

+0

申し訳ありませんが、おそらくトピック以外の質問:誰もがなぜこのタイプのループをループを使って配列に使うのですか?これについての一言もI.Eには言及していません。 – Vocaloidas

+1

@ Vocaloidas新しい記事は正当な理由で新しいES6の構文に頼っているので、IEのようなブラウザは放棄されています(そのためです)。現在の一般的なアプローチは、新しい構文を使用し、次にそれを翻訳するか、または近代的な十分な環境を使用するかのいずれかです。 – MaxArt

+0

だから、この関数は私のaddItem関数を破壊します。どういうわけか、名前、色、マテリアルが一致するとアイテムの数量を増やすだけでなく、カートに新しいものも追加します。犯人を特定するのを助けることができますか?関数のパラメータで渡される変数(名前、色、マテリアル)が.item変数と同じであるかどうかを調べました。 – Vocaloidas

関連する問題