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 .
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 "
et '
comme guillemet et apostrophe, respectivement.
Armé de cette connaissance, utilisez ceci:
document.getElementById("something").innerHTML = "<img src='something' onmouseover='change("ex1")' />";
... Ceci étant dit, vous pouvez utiliser des citations JavaScript:
document.getElementById("something").innerHTML = "<img src='something' onmouseover='change(\"ex1\")' />";
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
Vous pouvez échapper à un '
en JavaScript comme \'
Puisque les valeurs sont en réalité à l'intérieur d'un attribut HTML, vous devez utiliser '
"<img src='something' onmouseover='change('ex1')' />";
document.getElementById("something").innerHTML = "<img src=\"something\" onmouseover=\"change('ex1')\" />";
OR
document.getElementById("something").innerHTML = '<img src="something" onmouseover="change(\'ex1\')" />';
Ça devrait marcher ...