HTMLエスケープ(エンティティ)をテキストにする必要があります。 createTextNode
のためのドキュメントによると:
data
は、それだテキストノード
に入れるべきデータを含む文字列です。これは、テキストノードに配置されるデータです。 DOM specも同様です。
指定された文字列を指定してTextノードを作成します。
この文字列にUnicodeを含める必要があります。 JavaScript文字列にUnicodeを含めるには、\uXXXX
の形式でUnicode escapesを使用します。
var textnode = document.createTextNode("x \u2208 \u211D");
それとも、あなたは単に、実際のUnicode文字が含まれており、すべての問題を避けることができます:ちょうどあなたは、JSファイルはUTF-8を務めていることを確認してください、この場合、
var textnode = document.createTextNode("x ∈ ℝ");
をファイルをUTF-8などで保存する
.innerHTML
をHTMLエンティティで使用する理由は、コンテンツをHTMLとして設定するため、マークアップ、特殊エンティティなどを含めてHTMLとして解釈されるためですこれを理解する方が簡単かもしれません。以下の差:
document.createTextNode("<div>foo</div>");
document.createElement("div").textContent = "<div>foo</div";
document.createElement("div").innerHTML = "<div>foo</div>";
最初リテラル文字"<div>foo</div>"
とテキストノードを作成します。 2番目の要素は、新しい要素の内容を文字どおり"<div>foo</div>"
に設定します。一方、3番目の要素は、テキスト"foo"
を含む新しい要素内に実際のdiv
要素を作成します。
テキストノード=この*テキスト*を含みます。内部HTML =この* HTML *を含みます。 1つのケースはHTMLとして明示的に評価され、もう1つのケースは明示的に – deceze