まず、例を見てみましょう。
コードコピーは次のとおりです。
<form name = "buyerform" method = "post" action = "/mysport/control/user/list.do">
<入力型= "チェックボックス" id = "usernames" value = "testtest"> testtest <br>
<入力型= "チェックボックス" name = "usernames" value = "testtest"> testtest <br>
<input type = "text" id = "usernames" value = "testtest"> testtest <br>
</form>
document.forms [0] HTMLページにフォームフォームまたは複数のフォームがある場合、ノデリストタイプのフォーム配列を返します。
document.forms [0] .usernames、ここでユーザー名はIDまたは名前の値になります。これらの2つの属性は同等です。さらに、コンポーネントがテキストボックス、ラジオボックス、またはチェックボックスであるかどうかを区別しません。
現時点では、2つの状況を区別する必要があります。
入力IDまたは名前が「usernames」の場合、document.forms [0] .usernamesは特定の入力コンポーネントを返します。操作している場合は、特定のコンポーネント操作方法に従って使用する必要があります。
現時点では、入力コンポーネントに長さプロパティがないため、Alert(document.forms [0] .usernames.length)が未定義に戻ります。
2つ以上の入力IDまたは「usernames」という名前がある場合、document.forms [0] .usernamesはノデリスト配列を返します。現時点では、
alert(document.forms [0] .usernames.length)は、配列の長さを返します。上記の例では、返品値は3です。
したがって、JSを使用してすべてを選択する場合、同じ名前の1つと複数のチェックボックスがある状況を検討してください。
コードコピーは次のとおりです。
function allselect(){
var form = document.forms [0];
var state = form.allselectbox.checked;
var length = form.usernames.length; //ユーザー名である2つ以上のチェックボックス名がある場合、配列の長さが返されます
//ユーザー名であるチェックボックス名がある場合、form。
if(length){// javascriptで、判断された条件が0、null、または未定義である限り、それは偽と見なされ、他のケースは真実と見なされます
for(var i = 0; i <length; i ++){
form.usernames [i] .checked = state;
}
}
それ以外{
form.usernames.checked = state;
}
}
「ユーザー名」または複数のコンポーネントIDのコンポーネントIDがあります。「ユーザー名」、document.getElementByID( 'usernames')は、フォームコンポーネントで返される値を返します。複数のコンポーネントIDが「ユーザー名」の場合、最初のコンポーネントIDは「ユーザー名」です。
コンポーネント名「ユーザー名」または複数のコンポーネント名「ユーザー名」、document.getElementsbyname()があります。 document.getelementsbytagname()との違いに注意してください。これは、タグカテゴリに従って配列を取得します。
var names = document.getElementsByTagname( "usernames")、alert(names [0])ここで返される結果は未定義です。以前は、bynameとbytagnameをミックスしていましたが、ユーザー名で始まるタグはありません。 <usernames value = ''> </usernames>これは存在しません。
ただし、getelementsBytagnameのreturnのリターンは依然として配列コレクションであり、コンテンツは含まれていない、名前[0]は存在しないため、アレイ範囲を超えると未定義の値がポップアップするため、返品は未定義です。
var test = {'0'、 '1'、 '2'、}; alert(test [3]);未定義を返します。