2017-06-03 31 views
1

這裏,我想從用戶那裏獲得輸入。拆分並將它們存儲到數組中。然後顯示數組數的總和。javascript中數組的求和

總和實驗

<!-- for taking inputs --> 
<input id="seriesInput" type="text" placeholder="please use space"> 
<!-- for submitting inputs --> 
<input id="submiting" onclick="seriesFunction()" value="Submit" type="button"> 
<!-- for placing results --> 
<div> Summation is <span id="sum"></span> </div> 
<script type="text/javascript"> 

function seriesFunction() 
{ 
    value = document.getElementById("seriesInput").value; 
    // splitting string in an array 
    value_arr = value.split(" "); 
    alert(value_arr); 
    // calling reduce method for summation 
    var sum = value_arr.reduce(get_sum,0); 
    // assigning result 
    document.getElementById("sum").innerHTML =sum; 
alert(sum); 


    function get_sum(total, currentVal) { 
total += currentVal; 
return total; 
} 
} 
</script> 

+3

不能肯定什麼問題?請參閱https://stackoverflow.com/help/how-to-ask – guest271314

+0

使用'console.log'而不是'alert'來進行調試。 –

+0

'currentVal'是一個字符串,而不是數字。 'whatever + string'總是一個字符串連接,從來不是數字加法。 – Thomas

回答

1

你得到CurrentValue的作爲get_sum函數字符串,請嘗試爲整數。你可以不喜歡它:

function get_sum(total, currentVal) { 
    currentVal = parseInt(currentVal); 
    total += currentVal; 
    return total; 
} 
+0

DASH,您不能通過使用'parseInt'來假設數字是整數。 OP說數字。 –

+0

我認爲他會明白艾哈邁德正在做的錯誤。你可以使用Number(currentVal),它會給你整數或浮點數val,無論它是什麼。 + currentVal是做事的捷徑。謝謝指出。 – DASH

+0

沒有要求。 – DASH

1

您需要修改的代碼:

function get_sum(total, currentVal) { 
       total += +currentVal; 
       return total; 
} 

通知+currentVal面前。這會將字符串轉換爲數字,不僅僅是int。所以好處是,如果你輸入三個值如1.1 1.2 1.3,你會得到6.6的總和。 以前沒有這個,你在做字符串連接而不是你打算做的總和。

function seriesFunction() { 
 
    value = document.getElementById("seriesInput").value; 
 
    // splitting string in an array 
 
    value_arr = value.split(" "); 
 
    alert(value_arr); 
 
    // calling reduce method for summation 
 
    var sum = value_arr.reduce(get_sum, 0); 
 
    // assigning result 
 
    document.getElementById("sum").innerHTML = sum; 
 
    alert(sum); 
 

 

 
    function get_sum(total, currentVal) { 
 
    total += +currentVal; 
 
    return total; 
 
    } 
 
}
<input id="seriesInput" type="text" placeholder="please use space"> 
 
<!-- for submitting inputs --> 
 
<input id="submiting" onclick="seriesFunction()" value="Submit" type="button"> 
 
<!-- for placing results --> 
 
<div> Summation is <span id="sum"></span> </div>