2014-04-10 28 views
6

Otrzymuję Uncaught SyntaxError: Nieoczekiwany błąd ciągu w moim JavaScript i szczerze nie mogę stwierdzić, co jest nie tak z kodem. Przyjrzałem się podobnym pytaniom, ale nie jestem w stanie znaleźć rozwiązania. Błąd pojawia się w linii zaznaczonej gwiazdką poniżej.Uncaught SyntaxError: Nieoczekiwany ciąg znaków w moim 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); 
}); 

Kod jest pobierana z Use jQuery to change a second select list based on the first select list option

Dodałem dodatkowe cudzysłowy wokół checkval aby pozbyć się inny błąd, to może być problem, ale jeśli mogę to zmienić, inne powraca błędach .

+1

Sprawdź podświetlanie składni. 'checkVal' wygląda jak ciąg, nie? –

Odpowiedz

2

Powinno być:

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

podwójne cudzysłowy muszą być wewnątrz pojedynczych cudzysłowów.

+0

Ah, który to naprawił, dziękuję! – Mohd

+0

@ user3463538 Nie ma problemu :) –

+0

@ user3463538 Jeśli odpowiedź pomoże ci sprawdzić odpowiedź jako zaakceptowaną. –

8

Problem jest taki:

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

po 1, zaczynasz ciąg; o 2, kończysz to. Oznacza to, że gdy dojdziemy do 3, początek nowego ciągu za pomocą podwójnych cudzysłowów, jest to nieoczekiwany ciąg znaków.

Prawdopodobnie chcesz:

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

po 1, rozpoczniemy ciąg. 2 jest po prostu " w ciągu znaków, nie kończy go. 3 kończy się, następnie dodajemy checkval, następnie zaczynamy nowy ciąg (4) z " w nim (5), a następnie ], a następnie na końcu ciągu (6).

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

powinny być

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

Masz notowań w niewłaściwym miejscu, więc cudzysłowu nie jest wliczone w ciąg.

2

Upewnij się, że chcesz uciec z cudzysłowów ukośnikiem odwrotnym (musisz również uciec z tego ukośnika odwrotnego, ponieważ ukośnik odwrotny ma specjalne znaczenie w ciągu znaków) -> użyj \\ przed cytatami. Ale zauważ, że notowania nie są wymagane w każdym przypadku.

Powiązane problemy