【问题标题】:Javascript syntax function error - Expected ')' [closed]Javascript语法函数错误 - 预期')' [关闭]
【发布时间】:2014-11-18 23:18:20
【问题描述】:

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

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

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>");

【问题讨论】:

  • 我没有看到与该行相关的任何错误消息 - jsfiddle.net/mso7ssz6,但如果 obj[i].Name 有空格或字母 - 由于参数周围没有引号,它可能会产生问题js函数。

标签: javascript jquery string syntax


【解决方案1】:

您缺少一些引号。试试这个

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

【讨论】:

  • 函数本身不需要加引号,但它的参数(obj[i].Name)可以。
  • 我收到了一个语法错误。不过这次它没有想出缺少的')'。
【解决方案2】:

在 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】:

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

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

【讨论】:

  • 啊,同样的错误。
  • Damare 的回答已经涵盖了另一个问题,我应该在我的问题中提到这一点。
【解决方案4】:

检查this question,如果没有您说该字符串将在下一行继续,javascript 似乎无法理解多行。它在末尾添加了一个分号,例如$("#textbox ul").append("&lt;li&gt;";,因此他认为您缺少')'

【讨论】:

    【解决方案5】:

    除非obj[i].Name 是数字,否则它需要在引号内:

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

    【讨论】:

    • 这个让我明白 - 未终止的字符串常量。
    • 如果obj[i].Name 包含引号,它可能会失败。无论如何,@Roamer-1888 有最好的答案。
    猜你喜欢
    • 1970-01-01
    • 2012-08-02
    • 2021-09-14
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2022-10-14
    • 2013-09-07
    相关资源
    最近更新 更多