display:none; を指定することでボックスを生成していないtextarea要素に対しては、スクリプト等を用いてDOMのvalueプロパティの値を取得することができない。
<script type="text/javascript">
function getValue() {
obj = document.getElementById("txt");
alert(
"nodeValue: " + obj.childNodes.item(0).nodeValue + "\n" +
"value: " + obj.value
);
}
</script>
<form><div>
<textarea id="txt" style="display:none;">
テキストエリアの内容物</textarea>
<input type="button" value="値を取得" onclick="getValue()">
</div></form>
ボタンを押すとJavascriptを用いて、textarea要素の内容物をnodeValueプロパティで参照した場合の結果とvalueプロパティで参照した場合の結果をアラートで表示します。
例示のスクリプトを実行すると以下のようになります。Opera6はアラートが表示されないので、valueプロパティの参照のみを行うスクリプトで実行した場合の結果を載せています。
| nodeValueプロパティ | valueプロパティ | |
|---|---|---|
| WinIE6.0 | 正しく取得 | 正しく取得 |
| Netscape7.1 | 正しく取得 | 正しく取得 |
| Opera7.23 | 正しく取得 | 正しく取得 |
| Opera7.11/7.03 | 正しく取得 | 取得不能 |
| Opera6.06 | childNodesプロパティが未実装 | 取得不能 |
textarea要素のボックスが生成されていればvalueプロパティの値を取得することができます。例えば、visibilityプロパティで不可視状態にしただけのtextarea要素でこの不具合は発生しません。