我正在解析一个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>");
答案 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>";