2012-07-18 91 views
1

JavaScript的新功能!這有效,但我還有很多事情要做,如果有一個更乾淨的方法來做到這一點,這將是非常好的..如果必要,打開使用jquery :)任何簡化此代碼的方法?

(堆棧要我寫更多, ,但我不知道還有什麼要說的)

<script> 

function apply(){ 
    var backerPrediction1 = document.getElementById("backer-prediction-1").value; 
    var backerPrediction2 = document.getElementById("backer-prediction-2").value; 
    var backerPrediction3 = document.getElementById("backer-prediction-3").value; 
    var backerPrediction4 = document.getElementById("backer-prediction-4").value; 
    var backerPrediction5 = document.getElementById("backer-prediction-5").value; 
    var backerPrediction6 = document.getElementById("backer-prediction-6").value; 
    var backerPrediction7 = document.getElementById("backer-prediction-7").value; 
    var backerPrediction8 = document.getElementById("backer-prediction-8").value; 
    var backerPrediction9 = document.getElementById("backer-prediction-9").value; 
    var backerPrediction10 = document.getElementById("backer-prediction-10").value; 
    var backerPrediction11 = document.getElementById("backer-prediction-11").value; 
    var backerPrediction12= document.getElementById("backer-prediction-12").value; 
    var backerPrediction13 = document.getElementById("backer-prediction-13").value; 
    var backerPrediction14 = document.getElementById("backer-prediction-14").value; 
    var backerPrediction15 = document.getElementById("backer-prediction-15").value; 
    var backerPrediction16 = document.getElementById("backer-prediction-16").value; 
    var backerPrediction17 = document.getElementById("backer-prediction-17").value; 
    var backerPrediction18 = document.getElementById("backer-prediction-18").value; 
    var backerPrediction19 = document.getElementById("backer-prediction-19").value; 
    var backers = parseInt(backerPrediction1,10) + 
       parseInt(backerPrediction2,10) + 
       parseInt(backerPrediction3,10) + 
       parseInt(backerPrediction4,10) + 
       parseInt(backerPrediction5,10) + 
       parseInt(backerPrediction6,10) + 
       parseInt(backerPrediction7,10) + 
       parseInt(backerPrediction8,10) + 
       parseInt(backerPrediction9,10) + 
       parseInt(backerPrediction10,10) + 
       parseInt(backerPrediction11,10) + 
       parseInt(backerPrediction12,10) + 
       parseInt(backerPrediction13,10) + 
       parseInt(backerPrediction14,10) + 
       parseInt(backerPrediction15,10) + 
       parseInt(backerPrediction16,10) + 
       parseInt(backerPrediction17,10) + 
       parseInt(backerPrediction18,10) + 
       parseInt(backerPrediction19,10) 
; 
document.getElementById("backer-prediction-answer").value = (backers); 
} 
</script> 

感謝您的幫助! :)

回答

9

我會做這樣的事情:

function apply() { 
    var backers = 0; 
    for (var i = 1; i < 20; ++i) { 
     backers += 
      parseInt(document.getElementById("backer-prediction-" + i).value); 
    } 
    document.getElementById("backer-prediction-answer").value = backers; 
} 
+1

'for'循環救援! – 2012-07-18 04:37:46

+0

對不起,你能告訴我這將取代什麼嗎? (新)感謝! – Reuben 2012-07-18 04:38:30

+1

@Reuben - 它會替換你的'apply()'函數的整個主體。我更新了代碼來澄清這一點。 – 2012-07-18 04:39:04

0
var answer = 0; 
for(var i = 1; i <= 20; i++) { 
answer += parseInt(document.getElementById("backer-prediction-" + i).value), 10); 
} 

document.getElementById("backer-prediction-answer").value = answer; 
+1

你可能想要'<20',而不是'<= 20' :-P – 2012-07-18 04:41:56

+1

那麼有什麼區別你的答案和Ted Hopp的i ++之外 – craftsman 2012-07-18 04:41:58

+0

他在我寫的時候是不正確的,他在我發佈之後(或同時)編輯和修正了它。而不是添加。他現在是正確的。 – 2012-07-18 05:43:33

0

您可以使用下面的代碼來獲取支持者人數。

function apply(){ 
    var answer = getBackers(); 
    document.getElementById("backer-prediction-answer").value = answer; 
} 

function getBackers() 
{ 
    var baseName = "backer-prediction-"; 
    var elementId = ""; 
    var backers = 0; 
    for(var i = 1; i < 20; i++) 
    { 
     elementId = baseName + i; 
     backers = backers + getElementValue(elementId); 
    } 

    return backers; 
} 

function getElementValue(elementId) 
{ 
    var value = document.getElementById("backer-prediction-1").value; 
    return parseInt(value, 10); 
} 
2

去這將是給每個backer-prediction-#元素類的,並抓住所有的人都清晰的方式:

var backerEls = document.querySelectorAll('.backer-prediction'); 
//Get a list of all the elements with the class 'backer-prediction' 
var backers = 0; 
//Total 
for (var i = 0; i < backerEls.length; i++) { 
    //Loop over the elements 
    backers += parseInt(backerEls[i].value, 10); 
    //Parse their values and add them to the total 
} 

console.log(backers);​ 

Demo

這讓你有作爲你想要的許多元素,而不必更新你的JS。