9

Htmlエンティティは、HTMLページの画像のalt属性でエンコードする必要があります。それで

<img id="formula" alt="A &rarr; B" src="formula.png" />

うまくいくでしょう。

一方、同じJavaScriptコードは機能しません

document.getElementById('formula').alt = 'A &rarr; B';

A&rarr;を生成します A→B代わりにB。

ソースコードに特殊な(エンコードされていない)文字を入れることができない場合、JavaScriptを介してそれを行う方法は?

4

4 に答える 4

8

JavaScriptには、文字列内の特殊文字をエスケープするための独自のシステムがあります。

document.getElementById('formula').alt = 'A \u2192 B';
于 2010-05-05T18:02:24.947 に答える
1
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Decode HTML entities using JavaScript</title>
  </head>
  <body>
    <img id="formula" src="vote-arrow-up-on.png" alt="A &rarr; C">
    <script>
      function html_entity_decode(str) {
        var p = document.createElement("p");
        p.innerHTML = str.replace(/</g,"&lt;").replace(/>/g,"&gt;");
        return p.innerHTML;
      }

      var theValue = html_entity_decode('A &rarr; B');
      document.getElementById('formula').title = theValue;
    </script>
  </body>
</html>

JavaScriptソースへのクレジット。

編集:元のコードを変更して、の代わりに要素でのみ使用innerHTMLするようにしました。<p>innerHTML value<textarea>

于 2010-05-05T17:32:33.573 に答える
1

Unicode形式を使用してファイルを保存できない場合の代替方法は次のとおりです。

function decodeHTML(str) {
    return str.replace(/&#(\d+);?/g, function() {
        return String.fromCharCode(arguments[1])
    });
}

ただし、これには数値表現を使用する必要があります。この場合&#8594;

于 2010-05-05T17:55:12.373 に答える
0

その特定のケースでは、JavaScriptで特別なHTML文字をエンコードする必要はありません。

W3Cバリデーターはこれについて文句を言うべきではなく(テストしたばかりです)、ドキュメントは検証する必要があります。コードを投稿しない場合は、回答を更新します。

于 2010-05-05T17:28:15.470 に答える