onclick=“;doSomething([object object])“;未捕获的语法错误:意外的标识符
onclick="doSomething([object Object])" Uncaught SyntaxError: Unexpected identifier
var params = {a:1,b:2};
var str = '<a href="#" onclick="doSomething('+params+')">aaaa</a>';
document.write(str);
当我点击页面上的<a>
时,它会抛出"Uncaught SyntaxError:Unexpected identifier"。我无法理解。
原因是当您使用字符串串联时,params
被强制转换为字符串,结果在括号中得到类似[object Object]
的内容。
您最好将params设置为var params = '{a:1,b:2}';
。
上升
正如评论中所建议的,另一种可行的方法是使用JSON.stringify
:
var params = {a:1,b:2};
var str = '<a href="#" onclick="doSomething('
+ JSON.stringify(params)
+ ')">aaaa</a>';
document.write(str);
请注意,旧版浏览器可能不支持JSON.stringify
,您需要包含其他库才能使其正常工作。
[object object]是任何JavaScript对象的字符串表示。在您的场景中,params
与一个字符串连接,该字符串将把任何变量类型强制转换为字符串。
在您的案例中,str
如下所示:<a href="#" onclick="doSomething([object Object])">aaaa</a>
正如你所看到的,这不是你想要的。
Li0liQ的答案很好。当你点击该链接时,你可以找到doSomething[object Object]
这是唯一需要的对象。您没有将params写入document
。铸造问题。
遇到了同样的问题。问题原因:呈现html时,params被转换为字符串"object object"。
这个问题可以通过两种方式解决:
方法1:在js代码中添加一个点击处理程序。请参阅添加点击处理程序
方法2:假设我想将一个名为"params"的JSON对象传递给onclick函数。由于我需要"params"对象的一些属性,所以我不想像第一种方法那样添加一个新的处理程序,而是只传递下面这些特定的参数:
'<a href="#" onclick="doSomething(''' + params['attribute1'] + '''', ''' +params['attribute2'] + '''')">aaa</a>'
- 铬:“;未捕获的语法错误:意外的标记:"
- 函数未在Object.keys或Object.getOwnPropertyNames下列出,但可以调用
- jQuery语法添加了var
- Javascript未捕获语法错误意外的标识符错误
- 为什么忽略了eval()代码中的语法错误
- 难以访问的JS环境中的语法错误
- 如何告诉MathJax对下标使用替代语法
- Javascript语法向设置发出sessionStorage值
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- 未捕获的语法错误:意外的标记{
- 使用$scope方法时的ControllerAs语法
- "未捕获的语法错误:意外的标记}"
- javascript自执行函数-不同的语法
- onclick=“;doSomething([object object])“;未捕获的语法错误:意外的标识符
- 如何判断对象是使用“Object.create”还是使用文字语法/“new”关键字创建的
- .createElement('object')和许多params的语法问题
- js-object-to-json语法错误
- JavaScript函数语法说明:Function object.myFunction(){.}
- jquery未捕获异常:语法错误,无法识别的表达式:.[object object]与按键功能
- jQuery错误:语法错误,无法识别的表达式:[object HTMLDivElement]