Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过提交按钮输入到同一数组中的所有值的总和_Javascript_Html - Fatal编程技术网

Javascript 通过提交按钮输入到同一数组中的所有值的总和

Javascript 通过提交按钮输入到同一数组中的所有值的总和,javascript,html,Javascript,Html,我想下一步很简单,但我一直在努力想办法。我投入了一笔钱,并通过提交按钮输入。当我输入多个值时,因为我也在列出钱花在了什么上,我试图得到所有钱花的总数,但我要么得到NaN,要么什么都没有。理论上,我希望每次点击“确认”时,文本框中的金额都会加到那天的总数中 我一直在尝试在数组中推送值,然后用for循环求和,但也许我让它变得比需要的更复杂。这是我的密码: 函数总开销{ var合计=0; var-spend=document.getelementbyidmoneyspend.value; var数组

我想下一步很简单,但我一直在努力想办法。我投入了一笔钱,并通过提交按钮输入。当我输入多个值时,因为我也在列出钱花在了什么上,我试图得到所有钱花的总数,但我要么得到NaN,要么什么都没有。理论上,我希望每次点击“确认”时,文本框中的金额都会加到那天的总数中

我一直在尝试在数组中推送值,然后用for循环求和,但也许我让它变得比需要的更复杂。这是我的密码:

函数总开销{ var合计=0; var-spend=document.getelementbyidmoneyspend.value; var数组=[]; //检查输入值是否为数字 如果是NannumbersPent{ 只提供电话号码; }否则{ var-spend=parseIntdocument.getelementbyidmoneyspend.value;
对于var i=0;i您必须在函数中声明您的数组,否则,每次调用函数时,都会删除旧值


我看到了两件事,第一件:

var spent = parseInt(document.getElementById("moneySpent").value);
当您将字符串输入值转换为parseInt时,您丢失了string.length属性,因此for无法工作

第二,如果你要对所有的数字求和,我认为没有必要将所有的值推到一个数组中,然后循环并对数字求和,你可以这样做:

} else {
    total = 0;
    var spent = document.getElementById("moneySpent").value;
    for (var i=0; i<spent.length;++i) total += parseInt(spent[i]);
    youSpent.innerHTML=`Total Spent Today: ${total}`;

}

您是我的朋友,我对您的代码做了最小的更改:

将数组初始化移到TotalExplored之外 只执行一次array.push,不需要循环 将初始值0添加到array.reduce var数组=[]; 函数总开销{ var合计=0; var-spend=document.getelementbyidmoneyspend.value; //检查输入值是否为数字 如果是NannumbersPent{ 只提供电话号码; }否则{ var-spend=parseIntdocument.getelementbyidmoneyspend.value; array.pushwasted; total=array.reducefunctionpreviousValue、currentValue、索引、数组{ 返回上一个值+当前值; }, 0; youspend.innerHTML=`Total-spend-Today:${Total}`; } } 今日总开支: 首先,应该在函数外部声明数组和total变量,这样就不会在每次调用函数时重新声明它们。 接下来,根据我对您问题的理解,我对简化函数的看法如下:
parseInt返回一个数字…您不能这样做。numbertotal+=+items[item]上的长度…然后document.getElementByIDTotalPause.textContent=Total$+Total.toFixed2查看并删除此内容我认为您有点困惑,var-Pause是一个单一的值,但您一直试图循环或像数组一样访问它。您只需将MoneyPause的值推送到数组中,然后还需要第二个按钮,以便用户完成输入值并准备对其求和。
} else {
    total = 0;
    var spent = document.getElementById("moneySpent").value;
    for (var i=0; i<spent.length;++i) total += parseInt(spent[i]);
    youSpent.innerHTML=`Total Spent Today: ${total}`;
<input type="amount" size=25 Placeholder="How much did you spend?" id="moneySpent">
<input type="button" value="confirm" onClick="totalSpent()">
<br>
<h2 id="youSpent"> Total Spent Today: 
var total = 0;
var array = [];

function totalSpent() {
    var spent = document.getElementById("moneySpent").value;
    // check if the entered value is number
    if (isNaN(Number(spent))) {
        alert("Numbers only");
    } else {
        var spent = parseFloat(document.getElementById("moneySpent").value);
        array.push(spent);
        total += spent;
        document.getElementById('youSpent').innerHTML=`Total Spent Today: ${total}`;
    }
}