먼저 예를 살펴 보겠습니다.
코드 사본은 다음과 같습니다.
<form name = "buyerform"method = "post"action = "/mysport/control/user/list.do">
<input type = "checkbox"id = "usernames"value = "testtest"> testtest <br>
<input type = "checkbox"name = "usernames"value = "testtest"> testtest <br>
<입력 유형 = "text"id = "usernames"value = "testtest"> testtest <br>
</form>
html 페이지에 양식 양식 또는 여러 양식 양식이 있으면 Nodelist 유형의 형식 배열을 반환합니다.
document.forms [0] .usernames, 여기서 사용자 이름은 ID 또는 이름의 값이 될 수 있으며,이 두 속성은 동일합니다. 또한 구성 요소가 텍스트 상자, 라디오 박스 또는 확인란인지 여부는 구별되지 않습니다.
현재 두 가지 상황을 구별해야합니다 .
입력 ID 또는 이름이 '사용자 이름'인 경우 document.forms [0] .usernames 특정 입력 구성 요소를 반환합니다. 작동하는 경우 특정 구성 요소 작업 방법에 따라 사용해야합니다.
현재 입력 구성 요소의 길이 속성이 없으므로 Alert (Document.Forms [0] .usernames.length)가 정의되지 않은 리턴을 반환합니다.
입력 ID 또는 이름 '사용자 이름'이름이 둘 이상인 경우 document.forms [0] .usernames는 Nodelist 배열을 반환합니다. 현재
alert (document.forms [0] .usernames.length)는 배열의 길이를 반환합니다. 위의 예에서는 반환 값이 3입니다.
따라서 JS를 사용하여 모두를 선택할 때 동일한 이름의 하나 및 여러 개의 확인란이있는 상황을 고려하십시오.
코드 사본은 다음과 같습니다.
function allSelect () {
var form = document.forms [0];
var state = form.allselectbox.checked;
var length = form.usernames.length; // 사용자 이름 인 확인란 이름이 둘 이상인 경우 배열의 길이가 반환됩니다.
// 사용자 이름 인 확인란 이름이있는 경우 form.usernames는 배열이 아닌 확인란 객체를 반환하므로 길이 속성이 정의되지 않았습니다.
if (length) {// javaScript에서 판단 된 조건이 0, null 또는 정의되지 않은 한, 거짓으로 간주되며 다른 경우는 true로 간주됩니다.
for (var i = 0; i <길이; i ++) {
form.usernames [i] .checked = state;
}
}
또 다른{
form.usernames.checked = state;
}
}
'사용자 이름'의 구성 요소 ID 또는 여러 구성 요소 ID는 'usernames', oxpernementById ( 'username')는 양식 구성 요소에 의해 리턴 된 값을 반환합니다. 여러 구성 요소 ID가 '사용자 이름'인 경우 첫 번째 구성 요소 ID는 '사용자 이름'입니다.
구성 요소 이름 '사용자 이름'또는 여러 구성 요소 이름 'username', otodeLementsByName ()이 htmlCollection 배열을 반환합니다. 태그 범주에 따라 배열을 가져 오는 Document.GetEmentsByTagName ()의 차이점에 유의하십시오.
var names = document.getElementsByTagName ( "사용자 이름"), Alert (이름 [0]) 여기에 반환 된 결과는 정의되지 않았습니다. ByName을 ByTagName과 믹싱했는데 사용자 이름으로 태그가 시작되지 않았습니다. <사용자 이름 값 = ''> </usernames> 이것이 존재하지 않습니다.
그러나 getElementsByTagName의 반환은 여전히 어레이 컬렉션이며, 컨텐츠가 포함되지 않은 이름 [0]은 존재하지 않으므로 배열 범위가 초과되면 정의되지 않은 값이 팝업되므로 반환이 정의되지 않습니다.
var test = { '0', '1', '2',}; Alert (테스트 [3]); 정의되지 않은 반환.