对不起,如果这是一个愚蠢的问题。我是编程新手...... 我有一个来自文本输入的3个值。我希望将这些值中的2个存储到单独的数组中以供以后访问。最后我想在我的文档中显示这3个值的总和。 我做错了什么?
这是我的代码:
<script>
function displayCurrentBalance() {
var initialBalance = parseFloat(document.getElementById("initialBalance").value);
var inAmounts=[0];
var outAmounts = [0];
inAmounts.push(document.getElementById("amountIn").value);
outAmounts.push(document.getElementById("amountOut").value);
var sumIn = (inAmounts.reduce(function(a, b) {
return a + b[1];
}, 0));
var sumOut = (outAmounts.reduce(function(c, d) {
return c + d[1];
}, 0));
var result = initialBalance + sumIn - sumOut;
document.write(result);
};
displayCurrentBalance();
</script>
答案 0 :(得分:0)
document.write(result);
会覆盖您的文档。使其在另一个输入框中显示值,或alert(result)
。
您应该将displayCurrentBalance
附加到某个按钮的onclick
处理程序,例如<button onclick="displayCurrentBalance()">Calculate</button>
。
document.getElementById("amountIn").value
和类似的调用会给你一个字符串。您应该使用parseFloat或parseInt将其转换为整数或浮点数。
答案 1 :(得分:0)
您可能在页面中的元素可用之前调用该函数。否则,脚本应该在页面中的元素下面。
您的主要问题是如何使用reduce。从输入返回的值是字符串,因此在尝试添加它们之前将它们转换为数字(否则您将连接字符串,而不是添加数字)。您也应该验证这些值。
此外,使用数组成员的值调用reduce,而不是数组本身(这是提供给回调的第4个参数,而不是第二个参数),因此:
var sumIn = (inAmounts.reduce(function(a, b) {
return +a + +b;
}, 0));
同样修改对 reduce 的其他调用。由于您将数组初始化为[0]
,因此我认为您不需要提供初始值。或者,保持调用中的初始值并将数组初始化为[]
(即空数组)。
不是使用 document.write 来显示结果,而是将其写为只读输入元素的值,这样您就可以在后续调用时更新它,因为用户修改了值其他投入。