1. ホーム
  2. javascript

[解決済み】JavaScriptでシングルクォート( ' )をエスケープするには?[重複している]

2022-04-15 02:11:32

質問

UPDATEです。 この質問に対して、最新の回答をしたいと思います。まず、もしあなたが以下のようなことを実現しようとしているのであれば、以下の方法でイベントを管理することをお勧めします。 イベントリスナーの追加 その代わりに 私が強くお勧めするのは jQuery という構文を使って、プロジェクトで イベントリスナーの管理 をDOMを使用して上書きします。

QUESTION

さて、私は基本的にこうしています。

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

を入れるところにダブルクォーテーション(")を入れないでほしい。シングルクォートだけでいいので、ダブルクォートを使わせないようにしたいのです。最終的にこれを目指しています。

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

エスケープがうまくいかない

私のマークした回答は問題なく機能しますが、よりクリーンな(そしてよりプロフェッショナルに見える、IMO)方法は次のとおりです。 loganfsmythの回答 .

解決方法は?

ブラウザが最終的に何を見るかを常に考慮する必要があります。この場合、ブラウザはこれを見ることになります。

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

つまり、"onmouseover" 属性は、単に change( という別の属性があります。 ex1')' を、値なしで表示します。

実は、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\")' />";