这个问题已经在这里有一个答案:
- 在JavaScript函数单引号逃逸参数 6个回答
更新:我想给一个更新的回答这个问题。 首先,让我们,如果你试图完成什么,我有以下,我建议您通过管理事件我说明添加事件侦听器来代替。 我强烈建议您使用jQuery的为您的项目和使用他们的语法来管理事件侦听器在使用DOM。
题
好吧,我基本上这样做:
document.getElementById("something").innerHTML = "<img src='something' onmouseover='change(\'ex1\')' />";
我不想双引号(“),我把\”。我只想要一个单引号,所以我试图不让它投入使用时,我试图在最终结果达到这个双。
<img src="something" onmouseover="change('ex1')" />
转义是不是为我工作。
我的答案标工作正常,但是,清洁(更具有专业外观的方式,IMO)是loganfsmyth的答案 。
你应该总是考虑哪些浏览器将在年底看到。 在这种情况下,它会看到这一点:
<img src='something' onmouseover='change(' ex1')' />
换句话说,在“的onmouseover”属性只是change(
以及还有另一个“属性”之称ex1')'
没有价值。
事实是,HTML不使用\
为转义字符。 但它确实承认"
和'
分别逃脱引号和撇号。
有了这些知识,使用:
document.getElementById("something").innerHTML = "<img src='something' onmouseover='change("ex1")' />";
......话虽这么说,你可以只使用JavaScript的报价:
document.getElementById("something").innerHTML = "<img src='something' onmouseover='change(\"ex1\")' />";
这里的答案很简单:
你已经包含了它在双引号,所以没有必要与逃吧\
。
如果你想逃避单引号字符串单引号:
var string = 'this isn\'t a double quoted string';
var string = "this isn\"t a single quoted string";
// ^ ^ same types, hence we need to escape it with a backslash
或者,如果你想逃避\'
你能逃脱bashslash到\\
报价,报价以\'
,像这样:
var string = 'this isn\\\'t a double quoted string';
// vvvv
// \ ' (the escaped characters)
但是,如果包含有不同的报价类型的字符串,你不需要逃避:
var string = 'this isn"t a double quoted string';
var string = "this isn't a single quoted string";
// ^ ^ different types, hence we don't need escaping
由于数值实际上是一个HTML属性里面,你应该用'
"<img src='something' onmouseover='change('ex1')' />";
document.getElementById("something").innerHTML = "<img src=\"something\" onmouseover=\"change('ex1')\" />";
要么
document.getElementById("something").innerHTML = '<img src="something" onmouseover="change(\'ex1\')" />';
应工作...