Search code examples
javascripthtmlescaping

How do I escape a single quote ( ' ) in JavaScript?


UPDATE: I want to give an updated answer to this question. First, let me state if you're attempting to accomplish what I have below, I recommend that you manage events by adding event listeners instead. I highly recommend that you utilize jQuery for your project and use their syntax to manage event listeners over using DOM.

QUESTION

Okay, I am basically doing this:

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

I don't want double quotes (") where I put the \'. I only want a single quote, so I am trying to not make it put a double when it is used. I am trying to reach this in the final outcome.

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

Escaping isn't working for me.

My marked answer works fine, however, the cleaner (and more professional-looking way, IMO) is loganfsmyth's answer.


Solution

  • You should always consider what the browser will see by the end. In this case, it will see this:

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

    In other words, the "onmouseover" attribute is just change(, and there's another "attribute" called ex1')' with no value.

    The truth is, HTML does not use \ for an escape character. But it does recognise &quot; and &apos; as escaped quote and apostrophe, respectively.

    Armed with this knowledge, use this:

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

    ... That being said, you could just use JavaScript quotes:

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