ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript_javascript スキルにおける document.forms[0] と getElementByName の違い

JavaScript_javascript スキルにおける document.forms[0] と getElementByName の違い

WBOY
リリース: 2016-05-16 16:18:35
オリジナル
1378 人が閲覧しました

まず例を見てみましょう:

コードをコピーします コードは次のとおりです:

<フォーム名="buyerForm" メソッド="post" action="/mysport/control/user/list.do">
testtest

testtest

testtest


document.forms[0] HTML ページ内にフォーム form が 1 つまたは複数ある場合、NodeList 型のフォーム配列が返されます
document.forms[0].usernames。ここで、ユーザー名は id の値または name の値であり、ここではこれら 2 つの属性は同等です。また、コンポーネントがテキスト ボックス、ラジオ ボタン、チェック ボックスのいずれであるかは区別されません。

現時点では 2 つの状況を区別する必要があります

ID または名前が「usernames」である入力がある場合、document.forms[0].usernames は特定の入力コンポーネントを返します。この時点で操作する場合は、特定のコンポーネントの操作方法に従って使用する必要があります。 。

この時点では、入力コンポーネントに length 属性がないため、alert(document.forms[0].usernames.length) は未定義を返します。
ID または名前が「usernames」である入力が 2 つ以上ある場合、document.forms[0].usernames は NodeList 配列を返します。このとき、
が返されます。 alert(document.forms[0].usernames.length) は配列の長さを返します。上記の例では、戻り値は 3
です。 したがって、js を使用してすべてを選択する場合は、同じ名前のチェックボックスが 1 つ以上あるかどうかを考慮する必要があります

コードをコピーします コードは次のとおりです:

関数 allSelect(){
var form = document.forms[0];
var state = form.allselectbox.checked;
var length = form.usernames.length;//username という名前のチェックボックスが 2 つ以上ある場合、配列の長さが返されます
//usernames という名前のチェックボックスがある場合、form.usernames は配列ではなくチェックボックス オブジェクトを返すため、その長さ属性は未定義です
if(length){ //JavaScript では、判定対象の条件が 0、null、または未定義である限り false とみなされ、それ以外の場合は true とみなされます
for(var i=0;i form.usernames[i].checked=state;
}
}
それ以外{
form.usernames.checked=state;
}
}

「usernames」という ID を持つコンポーネントが 1 つある場合、または「usernames」という ID を持つコンポーネント ID が複数ある場合、document.getElementById('usernames') によって返される値はフォーム コンポーネントです。 「usernames」の ID。ID が「usernames」の最初のコンポーネントが返されます。
「usernames」という名前のコンポーネントが 1 つある場合、または「usernames」という名前のコンポーネントが複数ある場合、document.getElementsByName() は HTMLCollection 配列を返します。タグ カテゴリに基づいて配列を取得する document.getElementsByTagName() との違いに注意してください。
var names = document.getElementsByTagName("usernames"),alert(names[0]) ここで返される結果は元々 byName と byTagName を混同しており、ユーザー名で始まるタグはありません、< ;/usernames>これは存在しません。
ただし、getElementsByTagName は、コンテンツを含まない配列コレクションを返します。names[0] は存在しないため、配列の範囲を超えると、すべての未定義の値がポップアップするため、unknown が返されます。
var test = {'0','1','2',};alert(test[3]); は未定義を返します。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート