通过引用的Javascript字符串传递变量

时间:2012-01-10 14:00:23

标签: javascript

我有一个函数,它返回一个包含javascript调用的字符串。由于它被引用,我不能通过它传递变量。

如何更改返回字符串,以便我传递javascript对象值。

例如:我如何通过return语句传递var i

var i = 'iaa';

return '<a href="javascript:abccd(\'i\');" ><img src="../images/btnsave2.png" style="margin:6px 0 0 6px;" height="13" width="13" /></a> ';

2 个答案:

答案 0 :(得分:2)

试试这个,但请在投入实践之前重新考虑您的行动。

var i = "halo";
return '<a href="javascript:abccd(\''+i+'\');" ><img src="../images/btnsave2.png" style="margin:6px 0 0 6px;" height="13" width="13" /></a> ';

答案 1 :(得分:2)

如果您需要操作原始HTML,至少在JavaScript中单独添加事件处理程序。和CSS文件中的样式。

您的图片代码应包含data-属性:

i = i.replace(/"/g, '\\"')
return '<img data-input="' + i + '" src="../images/btnsave2.png" />'

然后添加一个监听器就像那样简单:

var onClick = function (e) {
    var data = e.target.getAttribute('data-input')
    if (data) {
        abccd(data)
    }
}

/* Firefox, Chrome &c */
if (document.addEventListener) {
    document.addEventListener('click', onClick, false)
/* IE <9 */
} else if (document.attachEvent) {
    document.attachEvent('onclick', function () {
        return onClick({ target: event.srcElement })
    })
}

当然,@ Quentin提到的XSS问题仍然是一个问题。但至少你不必像原始示例那样在内联处理程序中转义嵌套引号。