例:
こんにちは
> 次のコードを使用します:alert((document.getElementById("test")).innerText)
IE と Chrome では「Hello, world!」を取得できますが、Firefox では「未定義」を取得します」。本来の理由は、Firefox が要素の innerText 属性をサポートしていないためです。もちろん、インターネット上には、HTMLElement プロトタイプにプロパティ (リーダー) を追加するなど、この問題を解決するための優れた方法がすでにたくさんあります。
ただし、すべてのテキスト ノードには nodeValue 属性があり、すべてのブラウザがそれをサポートしています。このメソッドを使用して、HTML 要素内のテキストを読み取ることができます。
次の元のコードは、この問題を解決するだけです:
function getText(e) {
//ブラウザが要素の innerText 属性をサポートしている場合、この属性を直接返します
if(e.innerText) { return e.innerText } //innerText 属性はサポートされていません。
var t = "" を処理するには次のメソッドを使用します。
//要素オブジェクトが渡された場合は、その子要素へのアクセスを続行します。
e = e.childNodes || e;
//サブ要素
for(var i=0; i//Ifこれはテキスト要素であり、文字列 t に蓄積されます。
if(e[i].nodeType == 3) { t = e[i].nodeValue; }
//それ以外の場合は、要素のすべての子ノードを再帰的に走査します
else { t = getText (e[i].childNodes); }
}
return t;
}
この関数を使用して、次の DOM を見てみましょう。構造:
こんにちは
次に、
alert(getText(document.getElementById("test"));
IE、Chrome、Firefox で「Hello, world!」を取得できます。