JAVA

动态拼接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>';
上一篇 下一篇

猜你喜欢

热点阅读