Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.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/6/asp.net-mvc-3/4.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_Arrays - Fatal编程技术网

在Javascript中,如何从下拉列表和表单汇总数组中的所有值?

在Javascript中,如何从下拉列表和表单汇总数组中的所有值?,javascript,html,arrays,Javascript,Html,Arrays,我正在尝试创建一个在线订购菜单,当用户单击“添加配菜”按钮时,它将显示添加在无序列表中的配菜名称,但同时,我想将成本(定义在值中)添加到一个数组中,在该数组中我可以稍后单击“计算”添加所选主菜的成本,以及所有添加的配菜的成本,以获得订单的总额 我尝试将配菜的成本添加到一个数组中,然后将其转换为字符串,然后将主菜成本和配菜成本加在一起,但我没有任何运气 HTML 选择你的配菜 配菜 当前配菜 计算成本 总成本: JavaScript let main = document.getEl

我正在尝试创建一个在线订购菜单,当用户单击“添加配菜”按钮时,它将显示添加在无序列表中的配菜名称,但同时,我想将成本(定义在值中)添加到一个数组中,在该数组中我可以稍后单击“计算”添加所选主菜的成本,以及所有添加的配菜的成本,以获得订单的总额

我尝试将配菜的成本添加到一个数组中,然后将其转换为字符串,然后将主菜成本和配菜成本加在一起,但我没有任何运气

HTML



选择你的配菜

配菜

当前配菜

计算成本 总成本:

JavaScript

let main = document.getElementById("mainDish");
let side = document.getElementById("sideDish");
let ul = document.getElementById("list");
let li = document.createElement("li");
let rice = document.getElementById("rice");
let naan = document.getElementById("naan");
let sideDishes = [];

function addSideDish(){
    let sideValue = side.value;
    sideDishes.push(sideValue);
    document.getElementById("list").innerHTML += "<li>"+sideDishes[sideDishes.length-1]+"</li>";
}

function removeSideDish(){
    
}

function calculate(){
    let sideValue = side.value;
    let sum;
    sideDishes.forEach(function(entry) {
        sideDishes.push(entry);
        console.log(entry);
        console.log(sideDishes);
    let mainValue = main.value;
    let sideString = parseFloat(sideDishes);
    let mainString = parseFloat(mainValue);
    let entryString = parseFloat(entry);
    let add = entryString + mainString;
    document.getElementById("totalCost").innerHTML = add;
    }); 
}
document.getElementById("addSideDish").onclick = addSideDish;
document.getElementById("removeSideDish").onclick = removeSideDish;
document.getElementById("total").onclick = calculate;
let main=document.getElementById(“mainDish”);
let side=document.getElementById(“侧盘”);
设ul=document.getElementById(“列表”);
设li=document.createElement(“li”);
让rice=document.getElementById(“rice”);
设naan=document.getElementById(“naan”);
让副菜=[];
函数addSideDish(){
设sideValue=side.value;
侧盘。推(侧值);
document.getElementById(“list”).innerHTML++=“
  • ”+侧盘[sidedisks.length-1]+”
  • ”; } 函数removeSideDish(){ } 函数计算(){ 设sideValue=side.value; 让我们总结一下; 餐具。forEach(函数(条目){ 餐具。推(进); 控制台日志(条目); console.log(配菜); 让mainValue=main.value; 让sideString=parseFloat(餐具); 让mainString=parseFloat(mainValue); 让entryString=parseFloat(条目); 让add=entryString+mainString; document.getElementById(“totalCost”).innerHTML=add; }); } document.getElementById(“addSideDish”).onclick=addSideDish; document.getElementById(“removeSideDish”).onclick=removeSideDish; document.getElementById(“总计”).onclick=calculate;

    您的代码中几乎没有问题

    我现在将集中讨论主要问题——计算函数-

    您正在迭代条目,并将它们添加到循环中,并在循环中替换innerHTML的值

    您应该汇总所有值和主菜,并在循环之外更新html:

    function calculate(){
        let sideValue = side.value;
        let sum = 0/1; //just so sum will be int.
        sideDishes.forEach(function(entry) {
            sum+=parseFloat(entry)
        });
        let mainValue = parseFloat(main.value);
    
        let add = sum + mainValue;
        document.getElementById("totalCost").innerHTML = add;
    }
    

    当你说你运气不好时,你这是什么意思?当你运行它时发生了什么?@Nunchucks当我运行代码时,它将返回我的主菜成本+我刚才添加的配菜的最新值,而不是所有的。假设我加了木瓜(2)和萨莫萨(5),再加上主菜羊肉(15),它会返回20。我想让它返回22。
    function calculate(){
        let sideValue = side.value;
        let sum = 0/1; //just so sum will be int.
        sideDishes.forEach(function(entry) {
            sum+=parseFloat(entry)
        });
        let mainValue = parseFloat(main.value);
    
        let add = sum + mainValue;
        document.getElementById("totalCost").innerHTML = add;
    }