web-dev-qa-db-fra.com

Comment puis-je échapper à une seule citation (') en JavaScript?

UPDATE: Je souhaite donner une réponse actualisée à cette question. Tout d'abord, laissez-moi vous dire si vous essayez d'accomplir ce que j'ai ci-dessous, je vous recommande de gérer les événements en en ajoutant des écouteurs d'événement . Je vous recommande vivement d'utiliser jQuery pour votre projet et d'utiliser leur syntaxe pour gérer les écouteurs d'événement plutôt que d'utiliser DOM.

QUESTION

Ok, je fais essentiellement ceci:

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

Je ne veux pas de guillemets doubles (") où je mets le\'. Je veux seulement un guillemet simple, donc j'essaie de ne pas le faire mettre un double quand il est utilisé. J'essaie d'atteindre ceci dans le résultat final .

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

S'échapper ne fonctionne pas pour moi.

Ma réponse marquée fonctionne bien, cependant, le nettoyeur (et de manière plus professionnelle, IMO) est réponse de loganfsmyth .

174
Matthew

Vous devriez toujours considérer ce que le navigateur verra d’ici la fin. Dans ce cas, il verra ceci:

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

En d'autres termes, l'attribut "onmouseover" est simplement change(, et il existe un autre "attribut" appelé ex1')' sans valeur.

La vérité est que HTML n'utilise pas \ pour un caractère d'échappement. Mais il reconnaît &quot; et &apos; comme guillemet et apostrophe, respectivement.

Armé de cette connaissance, utilisez ceci:

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

... Ceci étant dit, vous pouvez utiliser des citations JavaScript:

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

La réponse ici est très simple:

Vous le contenez déjà entre guillemets, il n’est donc pas nécessaire de l’échapper avec \.

Si vous souhaitez échapper des guillemets simples dans une chaîne de guillemets simple:

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

ou si vous voulez échapper à \', vous pouvez échapper à la bashslash de \\ et à la citation de \' comme suit:

var string = 'this isn\\\'t a double quoted string';
//                    vvvv
//                     \ ' (the escaped characters)

Cependant, si vous contenez la chaîne avec un type de citation différent, vous n'avez pas besoin d'échapper:

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
147
h2ooooooo

Vous pouvez échapper à un ' en JavaScript comme \'

30
mburm

Puisque les valeurs sont en réalité à l'intérieur d'un attribut HTML, vous devez utiliser &apos;

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

OR

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

Ça devrait marcher ...

4
David Tayfun