2011-07-15 9 views
1

document.forms[0]が何かを返すのはなぜですか(ページの最初のフォーム)、document.getElementById("thediv").forms[0]は何も返しません。より複雑なページでなぜdocument.getElementById( "thediv")。forms [0]は要素を返しませんか?

Example JSFiddle

、私はIDを指定することにより、form要素のためのブラウザの検索の範囲を絞り込むことができ期待します。

+0

自分のIDに興味のあるフォームを与えてから、フォームIDにdocument.getElementByIDを使用して関連するフォームを直接見つけるのはどうでしょうか。私の推測では、ドキュメントにはフォーム配列がありますが、個々のdivはそうではありません。 – jfriend00

+0

@ jfriend00 - これは確かにオプションですが、この場合、クライアントのマークアップを変更する機能はありません。この質問で、私は一方通行がなぜ働くのか、もう片方が通用しないのかを理解しようとしています。 ;) – KatieK

答えて

2

formsdocumentのプロパティです。 document.getElementByIdは、HTMLElementオブジェクトを返す関数です。これにはformsというプロパティはありません。もっと論理的なjavascriptが必要ならjQueryを見てください。

2

DOM要素オブジェクトにformsというようなプロパティがないため、only the document objectです。

フォームは、ドキュメントツリー内のどこにあっても同じページ内のフォームです。特定の親要素に基づいてページ上のフォームのサブセットを取得する必要がある場合は、おそらくjQueryのようなライブラリを試してみてください。

2
document.getElementById('thediv').getElementsByTagName('form')[0]; 
関連する問題