在javascript中添加来自html文本框的值的困难

时间:2013-10-29 00:46:13

标签: javascript

对不起,如果这是一个愚蠢的问题。我是编程新手...... 我有一个来自文本输入的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>

2 个答案:

答案 0 :(得分:0)

    在您甚至有机会输入值之前,
  1. document.write(result);会覆盖您的文档。使其在另一个输入框中显示值,或alert(result)

  2. 您应该将displayCurrentBalance附加到某个按钮的onclick处理程序,例如<button onclick="displayCurrentBalance()">Calculate</button>

  3. document.getElementById("amountIn").value和类似的调用会给你一个字符串。您应该使用parseFloatparseInt将其转换为整数或浮点数。

答案 1 :(得分:0)

您可能在页面中的元素可用之前调用该函数。否则,脚本应该在页面中的元素下面。

您的主要问题是如何使用reduce。从输入返回的值是字符串,因此在尝试添加它们之前将它们转换为数字(否则您将连接字符串,而不是添加数字)。您也应该验证这些值。

此外,使用数组成员的值调用reduce,而不是数组本身(这是提供给回调的第4个参数,而不是第二个参数),因此:

var sumIn = (inAmounts.reduce(function(a, b) {
  return +a + +b;
}, 0));

同样修改对 reduce 的其他调用。由于您将数组初始化为[0],因此我认为您不需要提供初始值。或者,保持调用中的初始值并将数组初始化为[](即空数组)。

不是使用 document.write 来显示结果,而是将其写为只读输入元素的值,这样您就可以在后续调用时更新它,因为用户修改了值其他投入。