奇怪的无效或意外令牌错误

时间:2019-03-25 10:38:17

标签: javascript

我有以下一行:

document.write('<td><input value="Add to ShopBakset" 
        type="button" onClick="addToBasket(\'' + JSON.stringify(products[i]) + '\')"/></td>');

和以下代码:

 <!DOCTYPE HTML>
 <html>
 <head>
 <link rel="stylesheet" href="styles.css">
 </head>
 <body>
 <div class="center">
 <h1 align="center">Shop Basket</h2>
 <script type="text/javascript" src="external.js"></script>

 <table align="center">
<tr>
    <th align="left">Price</th>
    <th>Product</th>
    <th></th>
</tr>
<script>
for(let i=0;i<products.length;i++){
    for(let key in products[i]){
        document.write("<tr>");
        document.write("<td>" + key + "</td>");
        document.write("<td>" + products[i][key] + "</td>");
        document.write('<td><input value="Add to ShopBakset" 
    type="button" onClick="addToBasket(\'' + JSON.stringify(products[i]) + '\')"/></td>');
        document.write("</tr>");
    }
}
</script> // an error occurs here
    </table> 
    <center>
<a href="html-link.htm"><img src="shopbasket.jpg" title="basket" 
    alt="basket"></a>
    </center>
    </div>
    <p id="change"></p>
    </body>
    </html>

结束脚本标记行输出无效或意外的令牌。如果我省略JSON.stringify,则没有错误。我使用崇高的文字来创建我的应用程序。几天前,我遇到了此类错误的问题。这是由空白行引起的...

编辑: 进入3行:

document.write('<td><input value="Add to ShopBakset" type="button"'+ 
                'onClick="addToBasket(\''
                 + JSON.stringify(products[i]) + 
                 '\')"/></td>');

1 个答案:

答案 0 :(得分:1)

问题是您不能使用''""多行字符串。您应该使用'来关闭字符串。然后用新字符串添加+

document.write('<td><input value="Add to ShopBakset"'+ 
        'type="button" onClick="addToBasket(\'' + JSON.stringify(products[i]) + '\')"/></td>');

更好的方法是使用Template Strings

document.write(`<td><input value="Add to ShopBakset"
            type="button" onClick="addToBasket(${JSON.stringify(products[i])}')"/>
            </td>`)