动态拼接JS代码的问题
2018-08-12 本文已影响25人
毛毛可
在项目开发中,往往会涉及到动态拼装HTML或JS的情况,特别是这种
function (value, row, index) {
var rowJSON = encodeURI(JSON.stringify(row));
console.log(rowJSON);
var e = '<a href="javascript:void(0)" onclick="edit('+'\''+ rowJSON + '\'' + ')">编辑</a>';
var d = '<a href="javascript:void(0)" onclick="del('+'\''+ rowJSON + '\'' + ')">删除</a>';
return e + '<br>' + d;
}
当edit
函数需要传入对象参数时,不能直接写成:
var e = '<a href="javascript:void(0)" onclick="edit(' + row + ')">编辑</a>';
因为当前的a标签是动态拼接的所以,当出现这种拼接方式的时候,就拿不到正确的对象,在chrome浏览器中会报错如下:
Uncaught SyntaxError: Unexpected identifier
这时候就需要将row对象JSON序列化,并encodeURl()
,再在edit函数的回调中decodeURI()
function edit(value) {
//
var obj = JSON.parse(decodeURI(value));
console.log(obj);
}
这时候就能拿到传入的对象了.
记住
在拼接已URI编码的对象时要加上'\''
'<a href="javascript:void(0)" onclick="edit('+'\''+ rowJSON + '\'' + ')">编辑</a>';