我有这个功能:
function change_this(my_str)
{
$('#myDiv').html('<input value=\''+my_str+'\'>');
}
当我用这个函数调用这个函数时:
onclick=change_this('Test '');
我在调试器中看到'
已转为引号,因此脚本不起作用。
所以我的问题是:如何将字符串中的引号发送到JS函数?
我确信我不是第一个面对这个问题的人,我用Google搜索但没有找到任何简单的解释/答案。
答案 0 :(得分:1)
你有两个问题。这是因为您在HTML中嵌入了嵌入HTML的HTML,然后您可以通过将JavaScript字符串拼接在一起来生成HTML。你经常切换语言,这让我头晕目眩。
要在JavaScript中用单引号分隔的字符串中包含单引号,您必须使用\
转义它们。
onclick="change_this('Test \'');"
此处无需使用字符引用。 HTML中没有'
具有特殊含义。如果您使用'
而不是'
来划分属性值,则需要使用"
三次。
我完全避免使用onclick
并支持data-
属性和JS事件绑定。
<input type="button" data-foo="Test '">
$("[type=button]").on('click', function (event) {
change_this( $(this).data('foo') );
});
根据您采用的方法,您需要将'
转换为'
。请注意,您必须以编程方式执行此操作,因为如果您在onclick
属性中使用它,那么在JavaScript引擎甚至可以看到它之前,它将被HTML解析器转换为'
。
不要使用您当前的方法。将字符串混合在一起制作HTML是一场噩梦。
使用DOM或类似DOM的jQuery。
var input = $("<input />").val(my_str);
$('#myDiv').empty().append(input);