未捕获的SyntaxError:我的JavaScript中的意外字符串

时间:2014-04-10 21:12:44

标签: javascript jquery

我收到了Uncaught SyntaxError:我的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);
});

代码取自Use jQuery to change a second select list based on the first select list option

我在checkval周围添加了额外的引号以消除另一个错误,这可能是问题,但如果我更改它,则会返回另一个错误。

4 个答案:

答案 0 :(得分:9)

问题在于:

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

1,你正在开始一个字符串;在2,你结束它。这意味着当我们达到3,使用双引号开始新字符串时,它是一个意外的字符串。

你可能想要:

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

在1,我们开始字符串。 2只是字符串中的",它不会结束它。 3结束它,然后我们追加checkval,然后我们开始一个新的字符串(4),其中包含"(5),然后是],然后是字符串的结尾( 6)。

答案 1 :(得分:3)

应该是:

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

双引号必须在单引号内。

答案 2 :(得分:3)

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

应该是

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

您的引号位置错误,因此双引号不会包含在您的字符串中。

答案 3 :(得分:2)

确保用反斜杠转义引号(你也必须转义这个反斜杠,因为反斜杠在字符串内部有特殊含义) - >在引文前面使用\\。但请注意,在每种情况下都不需要引用。