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>'