- ベストアンサー
Javascript DOM?
<form name="test_from"> <input type="hidden" name="a" id="a" value="2"> </form> test_form.item("a")でアクセスするのと、 document.getElementById("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"); } ------------------------------------------------------------ で 処理できます。 以上の確認は、複雑なので見落としがあればお知らせください。
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
>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をつけることは当然問題ないのですが ユニークであるかどうかは保障されていませんので、 サプライヤー側できちんと整合性をとってやる必要があるでしょう。