拼接字符串作为html片段,有时候使用onclick需要传递一个对象,比如以下使用方法
var showJson={"name":"张三"};
$(".showButton") .append( ''<a class="delecls" onclick="show(''+showJson+'')" href="javascript:void(0)" title="显示">
显示</a>'');
show(data){
console.log(data);
}
这样处理输出的是[onject object],很显然不是我们想要的。
使用JSON.stringify(showJson)结果报错,很显然肯定是那里出了问题。
-
当你传进去的是字符串的时候: 要带有引号才可以,不然是会报错的。
-
当参数是 json 对象时: 用拼接字符串的方式构建html,只能拼接字符串,对象是没办法拼接的。
当进去的是对象时候,当你触发事件的时候,你将得到的是([object Object])
这里[object Object]会引起 Uncaught SyntaxError: Unexpected identifier
在这里还会遇到一个问题就是
unexpected end of input 这个错误是由于带的json字符串。它的双引号与onclick控件的双引号
那么解决方法就是
1.先JSON.stringify(json)
2.将双引号变成单引号replace(/"/g,"''")
3.将括号里的单引号除掉
4.function 直接获取到json对象,且不需要evel
var showJson={"name":"张三"};
showJson=JSON.stringify(showJson);
$(".showButton") .append( ''<a class="delecls" onclick="show(''+showJson.replace(/\"/g,"''")+'')" href="javascript:void(0)" title="显示">
显示</a>'');
show(data){
console.log(data);
}
```'
本文由 止戈 创作,采用 知识共享署名4.0
国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Jan 6,2020