Javascript 在单引号字符串中,围绕onClick的参数转义双引号
我问的是如何摆脱这种束缚:Javascript 在单引号字符串中,围绕onClick的参数转义双引号,javascript,escaping,Javascript,Escaping,我问的是如何摆脱这种束缚: function my(mstr){alert(mstr);}; document.getElementById('home').innerHTML = '<button onclick="my("a")">a</button>' 函数my(mstr){alert(mstr);}; document.getElementById('home')。innerHTML='a' 我们有'所以它的双引号在单引号中的双引号中 简单的“…”给出语法错误
function my(mstr){alert(mstr);};
document.getElementById('home').innerHTML = '<button onclick="my("a")">a</button>'
函数my(mstr){alert(mstr);};
document.getElementById('home')。innerHTML='a'
我们有'
所以它的双引号在单引号中的双引号中 简单的
“…”
给出语法错误。我知道我可以像
“…”
但我想知道为什么会出现这种语法错误
编辑:这里是JSFIDLE
编辑2:BallBin说它将a
so试图避开反斜杠:
'a'代码>
它呈现为奇怪:
a
并给出错误:
Uncaught SyntaxError:HTML属性值中由双引号分隔的意外标记非法
双引号应表示为“
字符在HTML中没有特殊意义
您的JavaScript字符串由“
字符分隔,因此”
不需要对JavaScript进行转义(使用\
)
不过,我首先要避免将JS嵌套在JS中的HTML中。使用DOM而不是字符串操作
// Create button with content and an event handler
var button = document.createElement('button');
button.appendChild(document.createTextNode('a'));
button.addEventListener("click", clickHandler);
// Get container, empty it and add the button to it
var container = document.getElementById('home');
container.innerHTML = ''; // Delete all nodes inside the element
container.appendChild(button);
function clickHandler(event) {
my("a");
}
更好的方法是首先不内联事件处理程序。改为使用。您得到的实际错误是什么?因为当它呈现按钮时,它呈现为a
。你需要双引号和单引号的混合。@Chris问题是你不能在那里使用双引号;您的脚本导致无效的HTML输出。在这种情况下,您必须在双引号内使用单引号。另一个选项是将函数调用定义为字符串变量,如var functionCall=“my(\'a\”)
然后使用document.getElementById('home').innerHTML='a”
@Chris,就像第三个示例中的onclick=“my(\'a\”)”
一样。该示例将其呈现为a
。现在单击按钮时,它将调用my()
传递字符“a”。