7

「markup4」などの二重引用符をエスケープするべきではありませんか?驚いたことに、このプレーンな作品。それらを&quotのものに置き換えても、そうではありません。

<script type="text/javascript">

    function test3(){
    document.getElementById('div21').innerHTML += '<div class = "markup4"><br>blablablabla1.<br><br></div><div class = "markup3"><br>blablabla2.<br><br></div>';
    }

</script>
4

4 に答える 4

14

これらは逃げることなく機能します:

innerHTML = "<div class = 'markup4'>";
innerHTML = '<div class = "markup4">';

注:"屋外で使用すると、'屋内で適切に機能します。(およびその逆)

これらは脱出が必要です:

innerHTML = '<div class = \'markup4\'>';
innerHTML = "<div class = \"markup4\">";

注:外側と内側の二重引用符を使用する場合、内側の "ニーズは。でエスケープする必要があります\。(一重引用符についても同じ)

これらは壊れます:

innerHTML = "<div class = "markup4">";
innerHTML = '<div class = 'markup4'>';
于 2013-01-19T11:39:56.383 に答える
1

データ内に引用符を含める場合は、escapeを使用する必要があります。

例:彼は「これを使ってください!」と言った。次のようにエスケープする必要があります:

彼は、「これを使ってください!」と言いました。

それ以外の場合は、問題なく動作します。

私が明確にしたことを願っています。

于 2013-01-19T11:37:21.127 に答える
1

まず、文字列が内部のjavascript文字列表現に解析されるため、最初にjavascript文字列リテラルをエスケープする必要があります。この結果は、すでに持っているものと同じになるため、変更する必要はありません。

今、あなたは持っています

<div class = "markup4"><br>blablablabla1.<br><br></div><div class = "markup3"><br>blablabla2.<br><br></div>

内部的にはjavascriptメモリ内。

この後は、通常のHTMLとして記述するのと同じように、もちろん、使用&quot;しても機能しません。

2つの異なる解釈を経る文字列を格納するのはかなり複雑になる可能性があります。そのため、これを行うべきではなく、ページ上の他のファイルまたはカスタムスクリプト要素に格納されているテンプレートでテンプレートエンジンを使用してください。 htmlの解釈について。

于 2013-01-19T11:42:05.073 に答える
0

ブラウザは、与えられた内容に基づいて独自のinnerHtmlをレンダリングすることを忘れないでください。これは、innerHtmlコードをネストする場合に問題を引き起こす可能性があります。

&apos;ここでと&quot;コードが役立つことがわかりました。

于 2018-08-22T14:27:01.130 に答える