大人になっても苦手な食べ物、ありますか?

<form name="test_from">
<input type="hidden" name="a" id="a" value="2">
</form>

test_form.item("a")でアクセスするのと、
document.getElementById("a")でアクセスするのとでは、どのように違うのでしょうか?

また、オブジェクトがありませんなどエラー時に強い方法、例えば
フォームにaが無い場合でも、エラーを回避して、該当するデータがありませんなど独自のメッセージを出すことは可能でしょうか?

A 回答 (2件)

IEとFirefoxで調べた範囲内ですが、



・ test_form.item("a")は、id属性として"a"があれば、IEのみ有効。

・ 両方でアクセスするには、elements配列を使って、"a"が最初の要素のとき
   test_form.elements.item(0)
   または
   test_form.elements[0]
  とする必要がありそうです。
   test_form.elements.item("a")
   または
   test_form.elements["a"]
  とするには、id属性として、"a"を設定しておく。

・ また、id属性をつけていても、IEで test_form.item("a")として拾えないものがありました。従ってこの場合は、
   document.getElementById("a")
  のほうがよいということになります。

・ nullとundefined値は、論理値としてはfalseに変換されるので、
------------------------------------------------------------
var e=test_form.elements.item("a");
if (e) {
alert("exist");
} else {
alert("not exist");
}
------------------------------------------------------------
で 処理できます。


以上の確認は、複雑なので見落としがあればお知らせください。
    • good
    • 0

>test_form.item("a")



ここでいうtest_formはformについたnameでアクセスしようとしています。
いまはformに名前をつけることは非推奨になっているので選択肢としては格下です。
document.getElementById("a")でやるのが妥当でしょう

もしくは
<form id="test_form">
<input type="hidden" name="a" id="a" value="2">
</form>
として
document.getElementById("test_form")["a"]

まぁこんなことするくらいなら最初から子要素のidでアクセスする方が
速いですね。
また、formの要素にnameをつけることは当然問題ないのですが
ユニークであるかどうかは保障されていませんので、
サプライヤー側できちんと整合性をとってやる必要があるでしょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報