2017-06-03 95 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>