This question already has an answer here:
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.
Okay, I am basically doing this:
document.getElementById(“something”).innerHTML = ““;
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.
Escaping isn’t working for me.
My marked answer works fine, however, the cleaner (and more professional-looking way, IMO) is loganfsmyth’s answer.
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
' as escaped quote and apostrophe, respectively.
Armed with this knowledge, use this:
document.getElementById("something").innerHTML = "<img src='something' onmouseover='change("ex1")' />";
document.getElementById("something").innerHTML = "<img src='something' onmouseover='change(\"ex1\")' />";
The answer here is very simple:
You’re already containing it in double quotes, so there’s no need to escape it with
If you want to escape single quotes in a single quote string:
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
or if you want to escape
\', you can escape the bashslash to
\\ and the quote to
\' like so:
var string = 'this isn\\\'t a double quoted string'; // vvvv // \ ' (the escaped characters)
However, if you contain the string with a different quote type, you don’t need to escape:
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
You can escape a
Since the values are actually inside of an HTML attribute, you should use
"<img src='something' onmouseover='change('ex1')' />";
document.getElementById("something").innerHTML = "<img src=\"something\" onmouseover=\"change('ex1')\" />";
document.getElementById("something").innerHTML = '<img src="something" onmouseover="change(\'ex1\')" />';
It should be working…