Javascript语法函数错误 - 预期')'

时间:2014-11-18 23:18:21

标签: javascript jquery string syntax

我正在解析一个JSON对象,并希望将每个对象作为一个链接,并使它们能够在单击时调用一个函数。然后我将每个对象附加到无序列表中。但是,我的代码中出现语法错误,但我认为字符串是正确构建的。该错误表明JAVASCRIPT ERROR(未知来源)预期')'

任何帮助将不胜感激,谢谢!

var string = "<a onclick=AppendDescription(" + obj[i].Name + ")>" + obj[i].Name + "</a>";
//This is what the string looks like after I build it. "<a onclick=AppendDescription(Test 1)>Test 1</a>"

$("#textbox ul").append("<li>"
        + string //error occurs here
        + "</li>");

5 个答案:

答案 0 :(得分:2)

你错过了一些引用。试试这个

var string = "<a onclick=\"AppendDescription(\"" + obj[i].Name + "\")\">" + obj[i].Name + "</a>";

答案 1 :(得分:1)

你被ASI钉死了。解析器在该行的末尾插入一个分号。将连接的+运算符移动到行的末尾。

$("#textbox ul").append("<li>" +
    string +
    "</li>");

答案 2 :(得分:1)

在javascript而不是HTML属性中附加事件处理程序更简单,更好。

我会做这样的事情:

$("<li/>").append($('<a href=""></a>').text(obj[i].Name).on('click', function(e) {
    e.preventDefault();
    AppendDescription($(this).text());
})).appendTo("#textbox ul");

修改

更好的是,将点击处理委托给父UL。

$("#textbox ul").on('click', 'li', function(e) {
    e.preventDefault();
    AppendDescription($(this).text());
})

for (var i=0; ...) {
    $("<li/>").append($('<a href=""></a>').text(obj[i].Name)).appendTo("#textbox ul");
}

答案 3 :(得分:0)

检查this question,看来javascript无法理解多行,如果没有你说该字符串将在下一行继续。它在末尾添加了一个分号,如$("#textbox ul").append("<li>";,所以他认为你错过了')'

答案 4 :(得分:0)

除非obj[i].Name是一个数字,否则它必须在引号内:

var string = "<a onclick=AppendDescription('" + obj[i].Name + "')>" + obj[i].Name + "</a>";