我在以下示例中有一些问题转义引号:
var newId = "New Id number for this line";
$(id).html('<td><input type="text" id="my' + newId + '" onKeyUp="runFunction("#my' + newId + '");"></td>');
Run Code Online (Sandbox Code Playgroud)
问题是,当我查看生成的代码时,id会更新到id="myNewId",但在函数调用中它看起来像这样:
onkeyup="runFunction(" #row2="" );=""
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
只是不要将JavaScript放入HTML字符串:
$(id).html(
'<td><input type="text" id="my' + newId + '"></td>'
).find("input").keyup( function() {
runFunction("#my" + newId);
});
Run Code Online (Sandbox Code Playgroud)
考虑一下,在这种特殊情况下,您可以将keyup()函数体交换为:
runFunction(this);
Run Code Online (Sandbox Code Playgroud)
因为你似乎想在对象本身上运行该函数.
您需要对HTML属性值使用HTML字符引用.试试这个:
function htmlEncode(str) {
var map = {"&":"amp", "<":"lt", ">":"gt", '"':"quot", "'":"#39"};
return str.replace(/[&<>"']/g, function(match) { return "&" + map[match] + ";"; });
}
$(id).html('<td><input type="text" id="my' + newId + '" onKeyUp="' + htmlEncode('runFunction("#my' + newId + '");') + '"></td>');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2440 次 |
| 最近记录: |