JavaScript - 无法将对象传递给onclick方法

时间:2016-10-18 23:19:57

标签: javascript html

我有一个图像,当它点击时我试图将一个对象传递给onclick方法,但是我收到一个错误:

missing ) after argument list

调试器控制台在第1行显示错误,与HTML doctype声明相同。

但是,当我传递一个字符串时,一切正常,方法就会执行。

有人可以告诉我这里缺少什么吗?

var item = {test:"blah"};// throws error
var emptyString= "";//works fine                                
str = str + '&nbsp;&nbsp;<img alt="" data-qtip="Submit Report" height="14px" width="14px" src="'+img+'" style="cursor:pointer" onclick="submitReport('+item+')"/>';

如果我传入emptyString,一切正常。

谢谢!

2 个答案:

答案 0 :(得分:0)

您应该使用JSON.stringify函数字符串化对象:

str = str + '&nbsp;&nbsp;<img alt="" data-qtip="Submit Report" height="14px" width="14px" src="'+img+'" style="cursor:pointer" onclick="submitReport('+JSON.stringify(item)+')"/>';

答案 1 :(得分:0)

你混淆了两件事。您尝试将对象放入字符串中,这是不可能的。你必须对对象进行字符串化(例如将其设为字符串),然后像这样传递它。

str = str + '&nbsp;&nbsp;<img alt="" data-qtip="Submit Report" height="14px" width="14px" src="'+img+'" style="cursor:pointer" onclick="submitReport('+JSON.stringify(item)+')"/>';

要将字符串返回submitReport()中的对象,您需要解析它:

var obj = JSON.parse(stringifiedObject);