元素列表后出现SyntaxError:缺少]

时间:2018-08-07 18:14:31

标签: javascript laravel-blade

这是我得到的错误:

  

SyntaxError:元素列表后缺少]

     

注意:[在第959行第12栏打开

这是参考输出:

var specifications = [
   [ "<option value="'1'">"'CPU'"</option>" ],
   [ "<option value="'2'">"'ram'"</option>" ],
   [ "<option value="'3'">"'LCD'"</option>" ],
   [ "<option value="'4'">"'Mouse'"</option>" ],
   [ "<option value="'5'">"'Graphic'"</option>" ],
   [ "<option value="'6'">"'Keyboard'"</option>" ],
];

这是我的代码:

var specifications = [
    @foreach($specifications as $specification)
        [ "<option value="'{{ $specification->id }}'">"'{{ $specification->title }}'"</option>" ],
    @endforeach
];

该如何解决?

1 个答案:

答案 0 :(得分:2)

您的字符串中没有转义的引号。

请考虑以下输入之一: "<option value="'1'">"'CPU'"</option>"。它以"开头,以"结尾。但是它的中间还有一堆",这使解析器感到困惑。因此,您之间的任何"都必须通过将其更改为\"来逃脱:

var specifications = [
    @foreach($specifications as $specification)
        [ "<option value=\"'{{ $specification->id }}'\">\"'{{ $specification->title }}'\"</option>" ],
    @endforeach
];

编辑:实际上,您似乎不需要太多的引号。 考虑更改

"<option value="'1'">"'CPU'"</option>"

"<option value='1'>CPU</option>"

在这种情况下,您无需转义任何内容,并且代码看起来会更简洁:

var specifications = [
    @foreach($specifications as $specification)
        [ "<option value='{{ $specification->id }}'>{{ $specification->title }}</option>" ],
    @endforeach
];