Javascript jQuery:从输入数组中获取所有值,并将它们计算为变量

Javascript jQuery:从输入数组中获取所有值,并将它们计算为变量,javascript,jquery,Javascript,Jquery,我有多个输入数组,请参见代码段。我需要计算所有输入的变量值。这是一个发票创建,所以我想知道所有项目的总价格与折扣。我怎样才能做到这一点 这就是我现在所拥有的: $'addNewPosition'。单击,函数E{ e、 防止违约; $'positions'。追加'\n'+ “\n”+ “\n”+ “\n”+ “\n”+ “\n”; }; //获取添加的所有项目的数量: var count=$input[name='item[]'].mapfunction{ 返回$this.val; }.get.

我有多个输入数组,请参见代码段。我需要计算所有输入的变量值。这是一个发票创建,所以我想知道所有项目的总价格与折扣。我怎样才能做到这一点

这就是我现在所拥有的:

$'addNewPosition'。单击,函数E{ e、 防止违约; $'positions'。追加'\n'+ “\n”+ “\n”+ “\n”+ “\n”+ “\n”; }; //获取添加的所有项目的数量: var count=$input[name='item[]'].mapfunction{ 返回$this.val; }.get.length;
您可以委托输入事件,以便在每次价格或折扣发生变化时计算总额

为了取得你的成绩,你可以与

$'addNewPosition'。单击,函数e{ e、 防止违约; $“位置”。追加+ “\n”+ “\n”+ “\n”+ “\n”+ “\n”+ “\n”+ ; }; $document.on'input',input[name=price[]],input[name=item_折扣[]],input[name=quantity[]],函数e{ var price=$'input[name=price[]]'。映射函数idx,ele{ 返回$ele.val.trim.length==0?0:parseFloat$ele.val.trim; }.获得; var折扣=$'input[name=item_折扣[]'。映射函数idx,ele{ 返回$ele.val.trim.length==0?0:parseFloat$ele.val.trim; }.获得; 变量数量=$'input[name=quantity[]'。映射函数idx,ele{ 返回$ele.val.trim.length==0?0:parseFloat$ele.val.trim; }.获得; var总计=价格。还原函数a、v、i{ 退货a+v-v*折扣[i]/100*数量[i]; }, 0; console.log'total='+total; }
您可以委托输入事件,以便在每次价格或折扣发生变化时计算总额

为了取得你的成绩,你可以与

$'addNewPosition'。单击,函数e{ e、 防止违约; $“位置”。追加+ “\n”+ “\n”+ “\n”+ “\n”+ “\n”+ “\n”+ ; }; $document.on'input',input[name=price[]],input[name=item_折扣[]],input[name=quantity[]],函数e{ var price=$'input[name=price[]]'。映射函数idx,ele{ 返回$ele.val.trim.length==0?0:parseFloat$ele.val.trim; }.获得; var折扣=$'input[name=item_折扣[]'。映射函数idx,ele{ 返回$ele.val.trim.length==0?0:parseFloat$ele.val.trim; }.获得; 变量数量=$'input[name=quantity[]'。映射函数idx,ele{ 返回$ele.val.trim.length==0?0:parseFloat$ele.val.trim; }.获得; var总计=价格。还原函数a、v、i{ 退货a+v-v*折扣[i]/100*数量[i]; }, 0; console.log'total='+total; }
这是另一个解决方法。但这是在VanillaJS中,您可以将其转换为Jquery

作用{ 让addNewButton=document.getElementByIdaddLineButton; 让baseItem=document.getElementById\u base; 让容器=document.getElementById'content'; 函数createItemidNumber{ 让newItemNode=baseItem.cloneNodetrue; newItemNode.id=\uUx+idNumber; container.insertBeforenewItemNode,document.getElementByIdtotals; document.queryselectoral.editable.forEachinput=>{ input.addEventListenerkeyup,事件=>{ 执行计算输入; }; } } addNewButton.addEventListener'click',事件=> { 让currentItemCount=document.getElementsByClassNameitem-container.length; createItemcurrentItemCount; }; 函数性能计算输入 { var cId=input.closesttr.item-container.id;//容器id var qtyVal=document.querySelector`${cId}.quantity input`.value; var priceVal=document.querySelector`${cId}.price input`.value; var discountVal=document.querySelector`${cId}.discount input`.value; var lineTotalElement=document.querySelector`${cId}.total input`; ifqtyVal和折扣价(&P) { lineTotalElement.value=NumberpriceVal*1-折扣Val/100*qtyVal.toFixed2; 表现总体; } } 功能性能总 { let element=document.getElementByIdtotalPrice; 让totalPrice=Number0; document.querySelectorAll.item.total input.forEachlinePrice=>{ 总价+=NumberlinePrice.value; }; element.value=总价.toFixed2; } }; tr输入{ 边界:无; 边框底部:2倍纯色灰色; 填充:0.25rem; } tr td:las t-child输入{ 背景色:白烟; } trtotals{ 边框顶部:薄实灰色; 填充:0.250; } _基地{ 显示:无; } 包裹沙箱 描述 量 价格 折扣 行总数 行总数 添加行
这是另一个解决方法。但这是在VanillaJS中,您可以将其转换为Jquery

作用{ 让addNewButton=document.getElementByIdaddLineButton; 让baseItem=document.getElementById\u base; 让容器=document.getElementById'content'; 函数createItemidNumber{ 让newItemNode=baseItem.cloneNodetrue; newItemNode.id=\uUx+idNumber; container.insertBeforenewItemNode,document.getElementByIdtotals; document.queryselectoral.editable.forEachinput=>{ input.addEventListenerkeyup,事件=>{ 执行计算输入; }; } } addNewButton.addEventListener'click',事件=> { 让currentItemCount=document.getElementsByClassNameitem-container.length; createItemcurrentItemCount; }; 函数性能计算输入 { var cId=input.closesttr.item-container.id;//容器id var qtyVal=document.querySelector`${cId}.quantity input`.value; var priceVal=document.querySelector`${cId}.price input`.value; var discountVal=document.querySelector`${cId}.discount input`.value; var lineTotalElement=document.querySelector`${cId}.total input`; ifqtyVal和折扣价(&P) { lineTotalElement.value=NumberpriceVal*1-折扣Val/100*qtyVal.toFixed2; 表现总体; } } 功能性能总 { let element=document.getElementByIdtotalPrice; 让totalPrice=Number0; document.querySelectorAll.item.total input.forEachlinePrice=>{ 总价+=NumberlinePrice.value; }; element.value=总价.toFixed2; } }; tr输入{ 边界:无; 边框底部:2倍纯色灰色; 填充:0.25rem; } tr td:最后一个子输入{ 背景色:白烟; } trtotals{ 边框顶部:薄实灰色; 填充:0.250; } _基地{ 显示:无; } 包裹沙箱 描述 量 价格 折扣 行总数 行总数 添加行
你想什么时候展示?当用户与输入交互时,单击按钮或自动更新后?您希望在哪里看到结果?在控制台里?在某个元素中?为什么要使用.length来表示刚刚创建的数组长度。您应该在映射后使用reduce,这有帮助吗?这是在我的模态中,然后我想把它传递给父母@Anton。我用长度来确定数组的长度,因为我想我可以在你想要显示的时候用循环?当用户与输入交互时,单击按钮或自动更新后?您希望在哪里看到结果?在控制台里?在某个元素中?为什么要使用.length来表示刚刚创建的数组长度。您应该在映射后使用reduce,这有帮助吗?这是在我的模态中,然后我想把它传递给父母@Anton。我正在使用长度来确定数组的长度,因为我想我可以使用循环,谢谢你的回复!没有数量,我尝试添加一个var quantity=$'input[name=quantity[]]'。mapfunctionidx,ele{return$ele.val.trim.length==0?0:parseFloat$ele.val.trim;}.get;在返回a-v*折扣[i]/100*数量中;,但是总数是NaNI,我已经在你的代码片段中输入了123个价格,10个折扣,3个金额,它显示总数=1230。谢谢你的回复!没有曲 Antty,我尝试添加一个var quantity=$'input[name=quantity[]]'.mapfunctionidx,ele{return$ele.val.trim.length==0?0:parseFloat$ele.val.trim;}.get;在返回a-v*折扣[i]/100*数量中;,但是总数是NaNI,我已经在你的代码片段中输入了123个价格,10个折扣,3个金额,它显示总数=1230。似乎很奇怪