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

Mat*_*hew 178 html javascript escaping

更新: 我想对这个问题给出一个更新的答案.首先,让我说明如果您正在尝试完成下面的操作,我建议您通过添加事件侦听器来管理事件.我强烈建议您为项目使用jQuery,并使用它们的语法来管理使用DOM的事件监听器.

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

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

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

<img src="something" onmouseover="change('ex1')" />
Run Code Online (Sandbox Code Playgroud)

逃避对我不起作用.

明确的答案很好,然而,更清洁(更专业的方式,IMO)是 loganfsmyth的答案.

Nie*_*sol 174

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

<img src='something' onmouseover='change(' ex1')' />
Run Code Online (Sandbox Code Playgroud)

换句话说,"onmouseover"属性是正确的change(,并且还有另一个ex1')'没有值的"属性" .

事实是,HTML不\用于转义字符.但它确实分别识别&quot;&apos;逃脱引用和撇号.

有了这些知识,请使用:

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

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

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

  • ......或者更好的是,根本不使用内联属性处理程序; 特别是通过javascript创建的元素. (22认同)
  • @SurajJain你有没有看过答案? (3认同)
  • 试过了 它仍然给我未定义,而不是给我值ex1 (2认同)

h2o*_*ooo 149

答案很简单:

你已经用双引号包含它,所以没有必要用它来逃避它\.

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

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
Run Code Online (Sandbox Code Playgroud)

或者如果你想逃避\',你可以逃避bashslash \\和引用,\'如下所示:

var string = 'this isn\\\'t a double quoted string';
//                    vvvv
//                     \ ' (the escaped characters)
Run Code Online (Sandbox Code Playgroud)

但是,如果包含具有不同引号类型的字符串,则无需转义:

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
Run Code Online (Sandbox Code Playgroud)


mbu*_*urm 32

你可以'像在JavaScript中一样逃避\'


log*_*yth 19

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

"<img src='something' onmouseover='change(&apos;ex1&apos;)' />";
Run Code Online (Sandbox Code Playgroud)


小智 5

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

要么

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

它应该正在工作...