display:none;状態のtextarea要素のvalueプロパティを取得不能

症状

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.06childNodesプロパティが未実装取得不能

textarea要素のボックスが生成されていればvalueプロパティの値を取得することができます。例えば、visibilityプロパティで不可視状態にしただけのtextarea要素でこの不具合は発生しません。

修正状況

  • Opera6.06、Opera7.03、Opera7.11で不具合の発生を確認しました。
  • Opera7.23でこの不具合は発生しないようです。

関連記事

スポンサーリンク

Joomla(ジュームラ)

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る