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

2022-08-30 01:14:41

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

问题

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

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

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

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

逃避对我不起作用。

我标记的答案工作正常,但是,更干净(更专业的方式,IMO)是loganfsmyth的答案


答案 1

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

<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\")' />";

答案 2

这里的答案很简单:

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

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

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