4 Stimmen

IE spaltet String nicht mit Javascript

Ich habe den folgenden Code:

$('#smallcart .plusone').live('click',function(){
   var id = $(this).attr('id');
   articlenr = id.split('_')[1];
});

dies funktioniert gut in FF, Safari, Chrome, aber in IE (7 und 8) es wirft einen Fehler auf die Split-Funktion (diese Eigenschaft oder Methode wird nicht von diesem Objekt unterstützt).

Wenn ich die 'id'-Variable alarmiere, erhalte ich etwas wie plus_5751 . (ich möchte also den Teil "5751" erhalten) wenn ich alert(typeof(id)) Ich bekomme String als Antwort...

Vielleicht kann mich jemand auf die richtige Antwort hinweisen?

Vielen Dank

4voto

Andreas Punkte 20751

Le site split funktioniert ziemlich gut im IE. Das Problem ist der Teil links des Gleichheitszeichens. Es ist ein Objekt mit allen Eingabefeldern, die den Namen articlenr und deshalb bricht der IE mit "Diese Eigenschaft oder Methode wird von diesem Objekt nicht unterstützt" ab, wenn Sie versuchen, ihm eine Zeichenfolge zuzuweisen.

2voto

Andy E Punkte 324972

Ihr Code funktioniert bei mir im Internet Explorer einwandfrei - so wie es zu erwarten ist. Das Problem muss woanders liegen, vielleicht überschreibt etwas String.prototype.split ?. Ein funktionierendes Beispiel für Ihren Code finden Sie unter http://jsfiddle.net/AndyE/6K77Y/ . Als erstes sollten Sie nach Internet Explorer-spezifischem Code in Ihren Skripten suchen.

Ich würde eine kleine Verbesserung für die Effizienz vornehmen. $(this).attr('id'); ist sozusagen die langatmige Art zu schreiben this.id . Es ist langsamer, weil ein neues jQuery-Objekt erstellt werden muss und dann die attr Funktion ausgeführt werden muss. Ohne diese Funktion kann Ihr Code stärker komprimiert werden und bleibt dennoch sehr lesbar, wenn Sie möchten:

$('#smallcart .plusone').live('click',function(){
   articlenr = this.id.split('_')[1];
});

0voto

Sam Dufel Punkte 17066

Versuchen Sie, Ihre Variable 'id' in etwas anderes umzubenennen. Der IE mag es nicht, wenn Sie Dinge in Ihren Skripten genauso benennen wie Elemente im DOM.

Aber egal, darum scheint es in diesem Fall nicht gegangen zu sein. Ich habe jedoch in der Vergangenheit Probleme mit IE-spezifischen Fehlern gehabt, die durch Variablennamen verursacht wurden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X