以下の例は、次のHTMLスニペットを参照しています。
<div id="test">
Warning: This element contains <code>code</code> and <strong>strong language</strong>.
</div>
ノードは次のJavaScriptによって参照されます。
var x = document.getElementById('test');
element.innerHTML
要素の子孫を記述するHTML構文を設定または取得します
x.innerHTML
// => "
// => Warning: This element contains <code>code</code> and <strong>strong language</strong>.
// => "
これは、W3CのDOM Parsing and Serialization Specificationの一部です。これはElement
オブジェクトのプロパティであることに注意してください。
node.innerText
オブジェクトの開始タグと終了タグの間のテキストを設定または取得します
x.innerText
// => "Warning: This element contains code and strong language."
innerText
Microsoftによって導入され、しばらくの間Firefoxでサポートされていませんでした。2016年の8月には、innerText
たWHATWGによって採用されたとV45でのFirefoxに追加されました。
innerText
これは、ブラウザによってレンダリングされたものと一致しようとするテキストのスタイル認識表現を提供します:
innerText
適用text-transform
およびwhite-space
規則
innerText
行間の空白を削除し、アイテム間に改行を追加します
innerText
非表示のアイテムのテキストを返しません
innerText
のtextContent
ようにレンダリングされない要素については<style />
、 `
Node
要素のプロパティ
node.textContent
ノードとその子孫のテキストコンテンツを取得または設定します。
x.textContent
// => "
// => Warning: This element contains code and strong language.
// => "
これはW3C標準ですが、IE <9ではサポートされていません。
- スタイリングを認識していないため、CSSによって非表示にされたコンテンツを返します
- リフローをトリガーしません(したがって、パフォーマンスが向上します)
Node
要素のプロパティ
node.value
これは、ターゲットにした要素によって異なります。上記の例でx
は、プロパティが定義されていないHTMLDivElementオブジェクトを返しますvalue
。
x.value // => null
<input />
たとえば、入力タグ()は、「コントロールの現在の値」を参照するvalue
プロパティを定義します。
<input id="example-input" type="text" value="default" />
<script>
document.getElementById('example-input').value //=> "default"
// User changes input to "something"
document.getElementById('example-input').value //=> "something"
</script>
ドキュメントから:
注:特定の入力タイプでは、戻り値はユーザーが入力した値と一致しない場合があります。たとえば、ユーザーがに数値以外の値を入力した<input type="number">
場合、戻り値は空の文字列になる可能性があります。
サンプルスクリプト
上記のHTMLの出力例を次に示します。
var properties = ['innerHTML', 'innerText', 'textContent', 'value'];
// Writes to textarea#output and console
function log(obj) {
console.log(obj);
var currValue = document.getElementById('output').value;
document.getElementById('output').value = (currValue ? currValue + '\n' : '') + obj;
}
// Logs property as [propName]value[/propertyName]
function logProperty(obj, property) {
var value = obj[property];
log('[' + property + ']' + value + '[/' + property + ']');
}
// Main
log('=============== ' + properties.join(' ') + ' ===============');
for (var i = 0; i < properties.length; i++) {
logProperty(document.getElementById('test'), properties[i]);
}
<div id="test">
Warning: This element contains <code>code</code> and <strong>strong language</strong>.
</div>
<textarea id="output" rows="12" cols="80" style="font-family: monospace;"></textarea>
innerText
MSIEによるtextContextの非標準の実装であるとの区別は重要です。