无法将对象传递给onclick方法

JavaScript -- Unable to pass object to onclick method

本文关键字:onclick 方法 对象      更新时间:2023-09-26

我有一个图像,当它被点击时,我试图传递一个对象到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+')"/>';

如果我传入空字符串,一切工作正常。

谢谢!

您应该使用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)+')"/>';

你把两件事搞混了。你试着把一个对象放进一个字符串,那是不可能的。你必须对对象进行字符串化(例如,使其成为字符串),以便像这样传递它。

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