2012-07-18 189 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。