0

Ich teste meine Website für I.E Kompatibilität und sofort betreibe ich in Fülle von Problemen:Erwartete ';' Ausnahme in I.E (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) 

An diesem Punkt bin ich hauptsächlich mit der; nicht erwartet, denn jedes Mal, wenn ich meinen Code überprüfe, ist es da.

enter image description here

+0

IE unterstützt 'for ... of' nicht, das ist es eben. – MaxArt

+0

Was ist die Alternative dann lol? – Vocaloidas

+0

Ich werde dann eine Antwort dafür hinzufügen. – MaxArt

Antwort

1

IE doesn't support for..of, so können Sie entweder transpile Code (zB with Babel) oder verwenden Sie eine gute alte forEach:

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

aktualisieren: Ich sehe jetzt, dass im Inneren des if blockieren, es gibt eine return Anweisung, um früh aus der Funktion auszubrechen, und deshalb verhält sich der Code, den ich vorschrieb, anders. Ich empfehle diese Art von Ansatz nicht, da dies zu unerwartetem Verhalten und Codeverdopplung führt. Als eine Norm, verlassen Sie eine Schleife mit break.

Ich sehe Sie sich vorher vergewissert werden, wenn der Artikel in den Warenkorb gelegt ist: Sie können es find verwenden können:

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(); 

Leider find ist wieder nicht in IE zur Verfügung, aber im Gegensatz zu for..of können Sie stellen Sie einfach eine polyfill. Alternativ können Sie immer Ihren alten Code mit einer klassischen for Schleife verwenden:

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

Wortreicher, weniger lesbar, aber immer noch wirksam.

+0

Okay, vielleicht eine off-topic Frage: Warum benutzt jeder diese Art von Looping über Arrays? Keine einzige Erwähnung darüber, die nicht auf I.E. – Vocaloidas

+1

@Vocaloidas Weil sich neue Artikel zu Recht auf die neue ES6-Syntax verlassen und dazu neigen, verwaiste Browser (wie IE) zu verwerfen. Der übliche übliche Ansatz ist: Benutze die neue Syntax, dann transpile sie entweder oder benutze eine moderne Umgebung. – MaxArt

+0

Verdammt, diese Funktion bricht meine AddItem-Funktion. Irgendwie erhöht es nicht nur die Quantität des Artikels, wenn der Name, die Farbe und das Material übereinstimmen, sondern fügt auch einen neuen in den Warenkorb hinzu. Kannst du mir helfen, den Schuldigen zu ermitteln? Ich habe überprüft, ob die in den Funktionsparametern übergebenen Variablen (Name, Farbe, Material) für die .item-Variablen gleich sind. – Vocaloidas

Verwandte Themen