2013-04-21 2 views
146

ОБНОВЛЕНИЕ: Я хочу дать обновленный ответ на этот вопрос. Во-первых, позвольте мне указать, пытаетесь ли вы выполнить то, что у меня есть, я рекомендую вам управлять событиями на adding event listeners. Я настоятельно рекомендую вам использовать jQuery для вашего проекта и использовать их синтаксис для manage event listeners с использованием DOM.Как избежать одиночной цитаты (') в JavaScript?

ВОПРОС

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

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

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

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

Мнемонизация не работает для меня.

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

+0

http://stackoverflow.com/questions/8744315/single-quote-escape-in-javascript-function-parameters – gongzhitaao

ответ

150

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

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

... или, что еще лучше, не использовать встроенные обработчики атрибутов; особенно на элементах, созданных с помощью javascript. – Bergi

+1

Пробовал. Это все еще дало мне undefined вместо того, чтобы давать мою ценность ex1 – Matthew

+0

Хорошо. Я сделал ошибку пользователя ... Вставьте неправильное место. – Matthew

126

Ответ здесь очень прост:

Вы уже содержащий в двойных кавычках, так что нет никакой необходимости, чтобы избежать его \.

Если вы хотите, чтобы избежать одиночные кавычки в одиночной кавычки строки:

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 
+0

Третий вариант работал как шарм –

+0

Сэр ' ' ' ' Это не работает, можете ли вы указать ошибка ? –

+0

@SurajJain Прежде всего, вы не должны использовать кавычки внутри предупреждения - вы выводите текстовое значение, а во-вторых, вы должны либо избегать кавычек, либо изменять свой тип в своем скрипте. – h2ooooooo

28

Вы можете бежать в JavaScript в ' как \'

16

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

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

Спасибо .. Я попробовал это однажды, но я думаю, что мог бы поставить его в худшую позицию. – Matthew

+0

Это решило мою проблему. Спасибо. –

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

ИЛИ

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

Должно быть выполнено ...

Смежные вопросы