未捕获的SyntaxError:意外的令牌}

时间:2010-08-29 20:50:48

标签: javascript jquery

我有一段jQuery代码,它将一个输入按钮附加到正文,然后为它分配一个onclick函数。要调用的函数已在别处定义,并且接受两个参数,这些参数是之前定义的变量。

这是我目前正在使用的代码:

$("body").append("<input type='submit' value='foo' onclick='foo(\'" + argument1 + "\',\'" + argument2 + "\'/>");

然而,当我尝试点击按钮时,我收到错误(在Chrome中)说:未捕获的SyntaxError:意外的令牌}。

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:5)

您应该使用jQuery分配点击处理程序:

var input = $('<input type="submit" value="foo" />')
    .click(function() { foo(argument1, argument2); })
    .appendTo(document.body);

请注意,这将通过引用捕获参数变量。

答案 1 :(得分:3)

您尚未关闭onclick中的foo()函数

答案 2 :(得分:1)

假设argument1 == '1'argument2 == '2',您的.append会提供

<input type='submit' value='foo' onclick='foo('1','1'/>

这显然不是有效的HTML。要解决它,你应该使用

.append("<input ... onclick='foo(\"" + argument1 + "\",\"" + argument2 + "\")'/>")

但这不是使用jQuery的正确方法。有关更好的代码,请参阅@SLaks's answer