web-dev-qa-db-ja.com

JavaScriptで一重引用符( ')をエスケープするにはどうすればよいですか?

更新: この質問に対する最新の回答をしたい。最初に、私が以下に持っていることを達成しようとしているかどうかを述べさせてください。代わりに イベントリスナーの追加 によってイベントを管理することをお勧めします。あなたのプロジェクトには jQuery を使い、DOMを使うよりも イベントリスナの管理 にそれらの構文を使うことを強く勧めます。

_ question _

さて、私は基本的にこれをやっています:

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

二重引用符( ")を置く場所に二重引用符(")は必要ありません。一重引用符だけを使用するので、使用するときに二重引用符を付けないようにしています。 。

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

脱出は私のために働いていません。

私のマークされた答えはうまくいきます、しかし、よりきれいな(そしてよりプロ並みのやり方、IMO)は loganfsmyth's answer です。

168
Matthew

あなたはいつもブラウザが最後まで見るものを考慮する必要があります。この場合、これが表示されます。

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

言い換えれば、 "onmouseover"属性は単にchange(であり、ex1')'と呼ばれる値を持たない別の "attribute"があります。

実のところ、HTMLはエスケープ文字に\を使用しません。しかし、&quot;&apos;をそれぞれエスケープ引用符とアポストロフィとして認識します。

この知識を持って、これを使ってください。

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

...それでは、JavaScriptの引用符を使用することもできます。

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

ここでの答えはとても簡単です。

二重引用符で囲んでいるので、\でエスケープする必要はありません。

単一引用符で単一引用符をエスケープしたい場合は、次のようにします。

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

あるいは\'をエスケープしたい場合は、次のようにbashslashを\\に、引用符を\'にエスケープすることができます。

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

ただし、別の引用タイプの文字列を含める場合は、エスケープする必要はありません。

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

'のようにJavaScriptで\'をエスケープすることができます

29
mburm

値は実際にはHTML属性の中にあるので、&apos;を使うべきです。

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

OR

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

それは働いているはずです...

4
David Tayfun