如何在JavaScript中转义单引号(')?

时间:2013-04-21 18:49:27

标签: javascript html escaping

更新 我想对这个问题给出一个更新的答案。首先,请允许我说明如果您尝试完成下面的操作,我建议您通过adding event listeners管理事件。我强烈建议您使用jQuery作为项目,并使用他们的语法manage event listeners来使用DOM。

问题

好的,我基本上是这样做的:

document.getElementById("something").innerHTML = "<img src='something' onmouseover='change(\'ex1\')' />";

我不想要双引号(“)我把它放在''。我只想要一个单引号,所以我试图在使用它时不要把它放一个双。我试图在最后的结果。

<img src="something" onmouseover="change('ex1')" />

逃避对我不起作用。

我的标记答案很好,但是,更清洁(更专业的方式,IMO)是loganfsmyth's answer

5 个答案:

答案 0 :(得分:170)

您应该始终考虑浏览器最终会看到的内容。在这种情况下,它会看到:

<img src='something' onmouseover='change(' ex1')' />

换句话说,“onmouseover”属性只是change(,还有另一个名为ex1')'的“属性”,没有任何价值。

事实是,HTML不会将\用于转义字符。但它确实将&quot;&apos;分别识别为转义引号和撇号。

有了这些知识,请使用:

document.getElementById("something").innerHTML = "<img src='something' onmouseover='change(&quot;ex1&quot;)' />";

......话虽如此,你可以使用JavaScript引号:

document.getElementById("something").innerHTML = "<img src='something' onmouseover='change(\"ex1\")' />";

答案 1 :(得分:144)

这里的答案非常简单:

您已经用双引号将其包含在内,因此无需使用\转义它。

如果要在单引号字符串中转义单引号:

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

答案 2 :(得分:29)

您可以在'

等JavaScript中转义\'

答案 3 :(得分:18)

由于这些值实际上在HTML属性中,因此您应该使用&apos;

"<img src='something' onmouseover='change(&apos;ex1&apos;)' />";

答案 4 :(得分:4)

    document.getElementById("something").innerHTML = "<img src=\"something\" onmouseover=\"change('ex1')\" />";

OR

    document.getElementById("something").innerHTML = '<img src="something" onmouseover="change(\'ex1\')" />';

应该有效......