我有一个这样的字符串:
var b = "<button type='button' onclick='javascript:"+f+"(\""+ encodedString+"\");'> hi</button>"
//encodedString = "a " <hr> <br>"
之后我做了类似的事情:
$('li').append(b);
之后,encodeString被解码,我的onclick不起作用,因为"
成为"
答案 0 :(得分:1)
不是通过html直接设置click
事件,而是绑定事件侦听器。 eval(f)
允许您通过字符串引用函数。如果可能,我建议传递对该函数的直接引用。
如果在全局范围内定义了该功能,请使用window[f]
。注意:如果f
看起来像Math.round
,则无效,因为window["Math.round"] != window["Math"]["round"]
。
//f is a string which contains a single function name.
var b = $('<button>').click(function(){
eval(f)(encodedString);
});
$('li').append(b);
如果f是动态变量(例如,在循环中),则将代码包装在匿名函数中:
(function(f){
var b = $('<button>').click(function(){
f(encodedString);
});
$('li').append(b);
})(eval(f));