Javascript onclick=";doSomething([object])”;未捕获的语法错误:意外的标识符

Javascript onclick=";doSomething([object])”;未捕获的语法错误:意外的标识符,javascript,onclick,syntax-error,Javascript,Onclick,Syntax Error,var参数={a:1,b:2}; var-str=''; 文件编写(str) 当我点击页面上的时,它抛出“未捕获的SyntaxError:意外标识符”。我无法理解 [object object]是任何JavaScript对象的字符串表示形式。在您的场景中,params与一个字符串连接,该字符串将把任何变量类型转换为字符串 原因是,当您使用字符串连接时,params被强制转换为字符串,因此括号中会出现类似于[object object]的内容 您最好将参数设置为varparams='{a:1,b:

var参数={a:1,b:2};
var-str='';
文件编写(str)


当我点击页面上的
时,它抛出“未捕获的SyntaxError:意外标识符”。我无法理解

[object object]是任何JavaScript对象的字符串表示形式。在您的场景中,
params
与一个字符串连接,该字符串将把任何变量类型转换为字符串

原因是,当您使用字符串连接时,
params
被强制转换为字符串,因此括号中会出现类似于
[object object]
的内容

您最好将参数设置为
varparams='{a:1,b:2}'

Upd.
正如评论中所建议的,另一种可行的方法是使用:

var参数={a:1,b:2};
var-str='';
文件编写(str);

请注意,较旧的浏览器可能不支持
JSON.stringify
,您需要将其包括在内以使其正常工作。

您的示例中的
str
如下所示:


正如你所看到的,这不是你想要的。

Li0liQ的答案很好。当您点击该链接时,您可以找到
doSomething[object object]

这是唯一需要的对象。您没有将参数写入
文档
。铸造问题。

遇到了相同的问题。 问题原因:呈现html时,params被转换为字符串“object object”

问题可以通过两种方式解决:

方法1:在js代码中添加一个点击处理程序。提及

方法2:假设我想将一个名为“params”的JSON对象传递给onclick函数。由于我需要“params”对象的一些属性,因此我不想在第一种方法中添加新的处理程序,而是只传递以下特定参数:

'<a href="#" onclick="doSomething(\'' + params['attribute1'] + '\'\, \'' +params['attribute2'] + '\'\)">aaa</a>'
“”

我想补充一点,如果您无法硬编码示例中所示的对象,并且实际需要将对象转换为字符串,则可以使用
JSON.stringify(params)
来确保格式正确。请注意,根据,
%22
被解析为
,因此将此值传递给
href
而不是
onclick
将导致XSS漏洞。
'<a href="#" onclick="doSomething(\'' + params['attribute1'] + '\'\, \'' +params['attribute2'] + '\'\)">aaa</a>'