我收到了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周围添加了额外的引号以消除另一个错误,这可能是问题,但如果我更改它,则会返回另一个错误。
答案 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)
确保用反斜杠转义引号(你也必须转义这个反斜杠,因为反斜杠在字符串内部有特殊含义) - >在引文前面使用\\。但请注意,在每种情况下都不需要引用。