2014-04-10 9 views
6

Ich bekomme die Uncaught SyntaxError: Unerwarteter String Fehler in meinem JavaScript und ich ehrlich gesagt nicht herausfinden, was mit dem Code falsch ist. Ich habe mir die ähnlichen Fragen angeschaut, aber ich kann keine Lösung finden. Der Fehler kommt in der Zeile, die unten mit einem Stern markiert ist.Uncaught SyntaxError: Unerwartete Zeichenfolge in meinem JavaScript

$("#items1").change(function() { 
    if ($(this).data('options') === undefined) { 
     $(this).data('options', $('#items2 option').clone()); 
    } 
    var checkval = $(this).val(); 
/* this line: */ var options = $(this).data('options').filter('[value='"+ checkval +"']'); 
    $('#items2').html(options); 
}); 

Der Code von Use jQuery to change a second select list based on the first select list option

genommen Ich habe die zusätzlichen Anführungszeichen um den checkval hinzugefügt einem anderen Fehler loszuwerden, könnte dies das Problem sein, aber wenn ich es ändern, kehren die anderen Fehler .

+1

Sehen Sie sich die Syntaxhervorhebung an. 'checkVal' sieht aus wie eine Zeichenkette, nein? –

Antwort

2

es sein sollte:

var options = $(this).data('options').filter('[value="' + checkval + '"]'); 

Die doppelte Anführungszeichen müssen innerhalb der einfachen Anführungszeichen sein.

+0

Ah, das hat es repariert, danke! – Mohd

+0

@ user3463538 Kein Problem :) –

+0

@ user3463538 Wenn die Antwort hilft, überprüfen Sie die Antwort als akzeptiert. –

8

Das Problem ist folgendes:

'[value=' "+ checkval +"']' 
^  ^^   ^^ 
1  2 3   45 

Bei 1, sind Sie eine Zeichenfolge beginnen; Bei 2 beenden Sie es. Das heißt, wenn wir 3 erreichen, ist der Beginn einer neuen Zeichenfolge mit doppelten Anführungszeichen eine unerwartete Zeichenfolge.

Sie wollen wahrscheinlich:

'[value="' + checkval + '"]' 
^  ^^    ^^^
1  23    45 6 

Bei 1 haben wir die Zeichenfolge beginnen. 2 ist nur ein " innerhalb der Zeichenfolge, es endet nicht. 3 endet es, dann fügen wir checkval an, dann beginnen wir eine neue Zeichenkette (4) mit einer " darin (5), gefolgt von einer ] und dann das Ende der Zeichenkette (6).

2
'[value=' "+ checkval +"']' 

sollte

'[value="' + checkval + '"]' 

Sie haben die Zitate am falschen Ort sein, so dass die zwei Anführungszeichen in der Zeichenfolge nicht enthalten ist.

2

Achten Sie darauf, dass Sie die Zitate mit einem Backslash verlassen (Sie müssen diesen Backslash ebenfalls umgehen, da Backslashes innerhalb von Strings eine spezielle Bedeutung haben) -> benutzen Sie \\ vor den Zitaten. Beachten Sie jedoch, dass Zitate nicht in jedem Fall erforderlich sind.

Verwandte Themen