2011-05-15 97 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"]; 

請注意,我將每個輸入字段的值,並將其分配到一個變量!

例如可以說該值輸入字段A,B,C,d,e爲如下:

1,2,3,4,5

因此,我希望它們被分配到變量「inputsvalue」就像:

var inputsvalue = "12345"; 

這就是爲什麼我加入他們那樣!那麼有沒有其他方法可以做到這一點!在這個例子中,我只有5個輸入字段,但是如果有大約100個輸入字段呢!

這個問題的目的是學習如何FOR循環語句在這個例子中的作品!

在此先感謝! :)

+0

這不是t你感興趣的是什麼,但我認爲獲得'12345''部分的更快方法是隻執行'var inputsvalue = inputs.join('');' – sdleihssirhc 2011-05-15 05:04:06

+0

謝謝帕特里克,是的,我不感興趣這樣做就好像有人看我的代碼一樣,它肯定會笑! :)))我剛剛開始學習JS,這需要很長時間才能學習,希望到明年夏天結束! :))我至少會知道JS的基本概念! – 2011-05-15 12:04:24

回答

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 +++ – 2011-05-15 12:06:16

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是這樣的:id="element0",或一般爲:​​

這種方式,你可以去:

var sum = 0; 
for (i=0; i<max; i++){ 
    var elements = document.getElementById("element" + i); 
    sum += Number(elements.value); 
} 
相關問題