Как избежать одиночной кавычки (') в JavaScript?

Хорошо, я в основном делаю это:

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

Мне не нужны двойные кавычки ("), где я помещаю их. Мне нужна только одна цитата, поэтому я стараюсь не делать ее двойной, когда она используется. Я пытаюсь достичь этого в конечный результат.

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

Для меня не работает Escaping.

Мой отмеченный ответ работает отлично, однако, более чистый (и более профессионально выглядящий способ, IMO) loganfsmyth answer.

Ответ 1

Вы всегда должны учитывать, что браузер увидит к концу. В этом случае он увидит следующее:

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

Другими словами, атрибут "onmouseover" - это просто change(, а другой "атрибут" называется ex1')' без значения.

Правда, HTML не использует \ для escape-символа. Но он распознает &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

Ответ 3

Вы можете избежать ' в JavaScript, например \'

Ответ 4

Так как значения находятся внутри атрибута HTML, вы должны использовать &apos;

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

Ответ 5

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

ИЛИ

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

Он должен работать...