2011-05-15 5 views
1

나는 이것을 이미 구현했지만, FOR 루프 문에 익숙하지 않아 아래처럼이 방법을 사용했다. FOR 루프 문을 사용하여이 코드를 짧게하고 어떻게 작동하는지 설명해주십시오. 여기 어레이에 여러 값을 할당하고 추가하는 방법은 무엇입니까?

감사

내 코드입니다 :

var inputs = new Array(); 
inputs["a"] = document.getElementById("a").value; 
inputs["b"] = document.getElementById("b").value; 
inputs["c"] = document.getElementById("c").value; 
inputs["d"] = document.getElementById("d").value; 
inputs["e"] = document.getElementById("e").value; 

그리고 나는 그들을을 추가했습니다 : 나는 각 입력 필드의 값을 추가하고로 할당하고있어

var inputsvalue = inputs["a"] + inputs["b"] + inputs["c"] + inputs["d"] + inputs["e"]; 

주 변수!

1, 2, 3, 4, 5

그래서 그들에게 할당 할 : 예

입력은 A, B, C, D, E를 필드는 다음과 같이되어있는 숫자라고 할 변수 "inputsvalue"에 다음과 같이 입력합니다.

var inputsvalue = "12345"; 

그래서 내가 그런 식으로 추가했습니다. 이렇게 다른 방법이 있습니까? 이 예제에서는 입력 필드가 5 개 밖에 없지만 약 100 개의 입력 필드가 있다면 어떻게 될까요?

이 질문의 목적은이 예제에서 FOR 루프 문이 어떻게 작동 하는지를 배우는 것입니다!

미리 감사드립니다. 일반적으로 id="element0", 또는 : id="element<n>"

당신이 갈 수있는이 방법 :

+0

그것은 더있어 당신이 관심을 가지고있는 것이지만,''12345 ''부분을 얻는 더 빠른 방법은'var inputsvalue = inputs.join (' ');' – sdleihssirhc

+0

할 것입니다. 감사합니다 패트릭, 예, 저는 관심이 없습니다 마치 누군가 내 코드를 보듯이 확실히 웃을 것입니다! :))) 나는 방금 JS를 배우기 시작했고, 내게 배울 시간이 오래 걸립니다. 다음 여름이 끝나기를 바랍니다. :)) 나는 적어도 JS의 기본 개념을 알고있을 것이다! –

답변

3
// Too bad you can't use reduce. 


inputs.reduce(function(a,b){ 
    return a.concat(b); 
}) 

// If you could use reduce, you could use map, as well. 

var sum= 'abcde'.split('').map(function(itm){ 
    return document.getElementById(itm).value; 
}).reduce(function(a, b){ 
    return a.concat(b); 
}); 
alert(sum) 

/* New browsers include map and reduce- 
    you can add them to older browsers, 
    but it might make your for in loops break, 
    if you use for in loops to iterate arrays. 
*/ 

if(!Array.prototype.map){ 
    Array.prototype.map= function(fun, scope){ 
     var T= this, L= T.length, A= Array(L), i= 0; 
     if(typeof fun== 'function'){ 
      while(i< L){ 
       if(i in T){ 
        A[i]= fun.call(scope, T[i], i, T); 
       } 
       ++i; 
      } 
      return A; 
     } 
    } 
} 
if(!Array.prototype.reduce){ 
    Array.prototype.reduce= function(fun, temp, scope){ 
     var T= this, i= 0, len= T.length, temp; 
     if(typeof fun=== 'function'){ 
      if(temp== undefined) temp= T[i++]; 
      while(i < len){ 
       if(i in T) temp= fun.call(scope, temp, T[i], i, T); 
       i++; 
      } 
     } 
     return temp; 
    } 
} 
+0

감사! 나는 이것을 시도 할 것이다. .. 정말로 당신의 도움에 감사한다! :) A +++ –

1

당신은

var elems = document.getElementsByTagName("input"); 
    var sum = ''; 

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

    alert(sum); // to check your result 
2
var inputsValue = ""; 
for (var i = 0; i < inputs.length; i++){ 
    inputsValue += inputs[i]; 
} 
1

이 할 수있는 더 나은 방법이 각 입력의 ID 같은 이름을하는 것입니다 사용할 수 있습니다 :

var sum = 0; 
for (i=0; i<max; i++){ 
    var elements = document.getElementById("element" + i); 
    sum += Number(elements.value); 
} 
관련 문제