我有一个函数,它返回一个包含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> ';
答案 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问题仍然是一个问题。但至少你不必像原始示例那样在内联处理程序中转义嵌套引号。