如何转义作为参数传递的字符串-无效的语法。参数列表后缺少)

时间:2018-12-21 23:06:09

标签: javascript jquery

尝试使用jquery追加时,我总是收到此错误。

Uncaught SyntaxError: missing ) after argument list

这是我的代码:

$(".grid-uniform").append('<input type="checkbox" id="addToCompare-'+prod.id+'" class="addToCompare" onclick="addProductToCompare('+prod.id+','+prod.json.variants[0].id+','+prod.title+')">');

以下是传入的值:

addProductToCompare(1557908979773,13234446893117,Apple iPhone X - Zizo ION Triple Layered Hybrid Rugged Case with Tempered Glass, Smoke/Clear)

看起来字符串中的“ with”已被JavaScript识别。它应该只是一个字符串。当我检查typeof时,它返回字符串。如果我将prod.price替换为prod.title并保持其他所有条件不变,则效果很好。

1 个答案:

答案 0 :(得分:1)

这是因为您没有将第三个参数设置为字符串文字,而是用引号分隔。

$(".grid-uniform").append(
    '<input type="checkbox" id="addToCompare-'+prod.id+'" class="addToCompare" ' +
    'onclick="addProductToCompare('+prod.id+','+prod.json.variants[0].id+',\''+prod.title+'\')">'
);

请注意在最后一个参数周围添加的\'

更好的方法:

$(".grid-uniform").append(
     $('<input>').attr({type: "checkbox", id: "addToCompare-"+prod.id})
         .addClass("addToCompare")
         .click(function () {
              addProductToCompare(prod.id, prod.json.variants[0].id, prod.title);
         })
);