【问题标题】:Javascript Passing variable to an onclick doesn't workJavascript将变量传递给onclick不起作用
【发布时间】:2015-12-16 19:47:14
【问题描述】:

我正在尝试使用 Javascript 通过 HTML 生成将变量传递给另一个函数,但它没有通过。这是我的代码:

var wer_people_btn1 = document.createElement("span");
wer_people_btn1.setAttribute('onclick', 'SendData(' + user.ID + " ANDINFO " + susData + ')');

function SendData(reply) {
}

user.ID 包含“3323”

susData 包含“ (info_user)”

我得到的错误:

Uncaught SyntaxError: missing ) after argument list

我认为 括号在这里造成了麻烦。如何将这些作为字符串传递给我的函数?

【问题讨论】:

  • 你看过生成的 HTML 吗?您生成的 javascript 中存在混乱。
  • SendData(3323 ANDINFO < DATA > (info_user)) 是的,在我看来是个错误。
  • 这能回答你的问题吗? Pass a string parameter in an onclick function

标签: javascript html javascript-objects


【解决方案1】:

因为无论您发送什么,该数据都必须是字符串。所以字符串必须用引号'" 但不应该冲突。因此,请使用 Javascript 的单引号和双引号,或者通过使用转义字符 \'

尝试仅使用一个
wer_people_btn1.setAttribute('onclick', "SendData('" + user.ID + " ANDINFO " + susData + "')");

评论中提到,只能传递事件和元素(this)。

更好的解决方法:上面将为SendData创建一个单一的字符串输入,但是你想作为单独的参数接收,那么下面的一个可以工作"SendData(" + user.ID + ",'" + susData + "')");,其中SendData的函数原型是SendData( userId, susData) //no quotes for user.ID since it is a number

如果您需要传递自定义对象,请查看SO 1st answer,这是我知道的唯一可能的方法。

【讨论】:

  • 这计算出了我的变量,伙计。你确定转义正确吗?
  • 我没有使用转义。但是您之前的功能将设置为"SendData(3323 ANDINFO < DATA > (info_user)),但我所做的是"SendData('3323 ANDINFO < DATA > (info_user)')。传递的值必须是字符串、对象引用、数字或布尔值。但前面的 1 两者都不是。 bcoz 没有 '' 引号。只需检查一次,如果问题仍然存在,请告诉我。
  • 但是在这个例子中你没有传递变量。您正在传递一个硬编码的字符串
  • @Earthling,检查我链接的解决方法和 SO 答案。希望对您有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-21
相关资源
最近更新 更多