6

私は自分の頭脳をグーグルで検索しましたが、これを機能させる方法がわかりません。これが私がやろうとしていることです:

HTML:

<div id=derp>&quot;Hi, my name is..&quot;</div>

Javascript:

var div = document.getElementById('derp');
alert(div.innerHTML);
alert(div.innerText);
alert(div.textContent);

これらのアラートはすべて、結果の文字列の&quot;ように解釈して返します。未解釈"の生のテキストを取得したい。&quot;

それらはすべて戻ります:

"Hi, my name is.."

取得したいとき:

&quot;Hi, my name is..&quot;

これを行う方法はありますか?"できれば、正規表現を使用してのすべてのインスタンスを。に置き換えようとしないで&quot;ください。

これは私がやろうとしていることの長い話のようなものですが、replace()を使用してのすべてのインスタンスを検索および置換するだけで"は、他の正規表現のマッチング/解析を行う必要があるため、実装するのが面倒です。

私の正気を救うことができるJavascriptウィザードを事前に感謝します!

4

2 に答える 2

11

bobinceを引用するには

ブラウザに要素ノードのinnerHTMLを要求すると、そのノードを生成するために解析された元のHTMLソースは提供されません。これは、その情報がなくなっているためです。代わりに、DOMに保存されているデータから新しいHTMLを生成します。ブラウザは、そのHTMLシリアル化のフォーマット方法を決定します。ブラウザが異なれば生成されるHTMLも異なり、元の形式と同じではない可能性があります。

要約すると:innerHTML/innerText/text/textContent/nodeValue/indexOf、それらのどれもあなたに未解析のテキストを与えません。

これを行う唯一の可能な方法は、正規表現を使用することです。または、ページ自体にajax投稿を行うこともできますが、これは悪い習慣です。

于 2013-03-14T20:43:30.823 に答える
2

私は数日前にいくつかの異なるアプローチでビンを準備しました:http://jsbin.com/urazer/4/edit

お気に入り:

var text = "<a href='#' title=\"Foo\"></a>");
var html = text.replace(/[<&>'"]/g, function(c) {
  return "&#" + c.charCodeAt() + ";";
});
于 2013-03-14T20:16:03.083 に答える