Hoe ontsnap ik aan een enkel aanhalingsteken ( ‘ ) in JavaScript?

UPDATE:
Op deze vraag wil ik een actueel antwoord geven. Laat me eerst aangeven of je probeert te bereiken wat ik hieronder heb, ik raad je aan om evenementen te beheren via in plaats daarvan gebeurtenislisteners toevoegen. Ik raad u ten zeerste aan om jQueryvoor uw project te gebruiken en hun syntaxis te gebruiken voor gebeurtenislisteners beherenvia DOM.

VRAAG

Ok, ik doe eigenlijk dit:

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

Ik wil geen dubbele aanhalingstekens (“”) waar ik de \’ plaats. Ik wil alleen een enkel aanhalingsteken, dus ik probeer er geen dubbele aanhalingstekens van te maken wanneer het wordt gebruikt. Ik probeer dit te bereiken in het uiteindelijke resultaat.

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

Ontsnappen werkt niet voor mij.

Mijn gemarkeerde antwoord werkt prima, maar de schonere (en meer professionele manier, IMO) is loganfsmyth’s antwoord.


Antwoord 1, autoriteit 100%

Je moet altijd bedenken wat de browser aan het eind te zien krijgt. In dit geval ziet het dit:

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

Met andere woorden, het attribuut “onmouseover” is gewoon change(, en er is nog een ander “attribuut” genaamd ex1')'zonder waarde.

De waarheid is dat HTML \niet gebruikt voor een escape-teken. Maar het herkent wel &quot;en &apos;als respectievelijk een aanhalingsteken en een apostrof.

Gewapend met deze kennis, gebruik dit:

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

… Dat gezegd hebbende, je zou gewoon JavaScript-aanhalingstekens kunnen gebruiken:

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

Antwoord 2, autoriteit 90%

Het antwoord hier is heel eenvoudig:

Je zet het al tussen dubbele aanhalingstekens, dus je hoeft het niet te escapen met \.

Als u enkele aanhalingstekens in een enkele tekenreeks met aanhalingstekens wilt vermijden:

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

of als je \'wilt escapen, kun je de bashslash escapen naar \\en het aanhalingsteken naar \'zoals:

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

Als u de tekenreeks echter met een ander type aanhalingstekens bevat, hoeft u niet te escapen:

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

Antwoord 3, autoriteit 20%

U kunt ontsnappen aan een 'in JavaScript zoals \'


Antwoord 4, autoriteit 11%

Aangezien de waarden zich in feite binnen een HTML-attribuut bevinden, moet u &apos;

gebruiken

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

Antwoord 5, autoriteit 3%

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

OF

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

Het zou moeten werken…

Other episodes