204

更新: 我想对这个问题给出一个更新的答案。首先,让我声明如果您尝试完成我在下面的内容,我建议您通过添加事件侦听器来管理事件。我强烈建议您在项目中使用jQuery,并使用它们的语法来管理事件侦听器,而不是使用 DOM。

问题

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

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

我不想要双引号(“)在我放 \' 的地方。我只想要一个单引号,所以我试图不让它在使用时放双引号。我试图在最终结果中达到这一点.

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

逃避对我不起作用。

我标记的答案效果很好,但是,更清洁(并且更专业的方式,IMO)是 loganfsmyth 的答案

4

5 回答 5

195

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

<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\")' />";
于 2013-04-21T18:53:16.873 回答
172

这里的答案很简单:

您已经将它包含在双引号中,因此无需使用\.

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

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
于 2013-04-21T18:52:21.137 回答
39

'您可以在 JavaScript中转义 a\'

于 2013-04-21T18:52:53.947 回答
22

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

"<img src='something' onmouseover='change(&apos;ex1&apos;)' />";
于 2013-04-21T18:53:24.283 回答
5
    document.getElementById("something").innerHTML = "<img src=\"something\" onmouseover=\"change('ex1')\" />";

或者

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

它应该工作...

于 2013-04-21T20:21:42.967 回答