2012-02-25 6 views
1

다음 코드는 버튼을 누를 때 실행됩니다. 그것은 getElementsByName 배열의 하나의 문자열을 경고 잘 작동하지만 루프에 도입 할 때, 그것은 여전히 ​​ 첫 번째 문자열 값을 경고 , 더 아무것도 : getElementsByName하나의name이 걸리기 때문에getElementsByName이 전체 배열을 반복하지 않습니다.

function checkvals() { 

var input = document.getElementsByName('ModuleTitle', 'ModuleCode', 'BuildingName', 'Day'); 
var i = 0; 

for (i = 0; i <= input.length; i++){ 
alert(input[i].value); 
} 
} 

답변

0

없다는 것을 인수를 지정하고 해당 값이 name 인 모든 요소를 ​​반환합니다. (https://developer.mozilla.org/en/DOM/document.getElementsByName을 참조하십시오.) 검색 할 name이 여러 개인 경우 여러 번 호출해야합니다.

+0

하지만 여전히 경고를 하나 개의 값 I이 할 경우에도 : 기능 checkvals을() { VAR 입력 = document.getElementsByName ('ModuleTitle', 'ModuleCode', 'BuildingName', '일'); 알림 (입력 [0]. 값); 알림 (입력 [1]. 값); 알림 (입력 [2]. 값); alert (입력 [3]. 값); } – user1228907

3

getElementsByName은 하나의 인수 만 허용하므로 첫 번째 이름 만 가져 오는 것입니다.

당신은이 같은 전체 콜렉션을 구축 할 수 있습니다 ...

var names = ['ModuleTitle', 'ModuleCode', 'BuildingName', 'Day']; 

var input = []; 
for(var i = 0; i < names.length; i++) { 
    var name_els = document.getElementsByName(names[i]); 
    for(var j = 0; j < name_els.length; j++) { 
     input.push(name_els[j]); 
    } 
} 

input 배열, (또는 내부 루프에서 작업을 할 단지)을 통해 다음 루프.


또한 버그가 있습니다.

for (i = 0; i < input.length; i++){ 

for (i = 0; i <= input.length; i++){ 

이이어야한다

이 ... ... ... 그렇지 않으면, 당신은 마지막 인덱스 과거를 갈 수 있습니다.

관련 문제