将一个数组的索引乘以另一个数组的相应索引。将所有结果相加。Javascript
我有一张有数量、商品名称、价格和总价的表格。商品名称和价格是我将从XML文件中检索的信息。“数量”字段是用户可以输入任意数量的字段 我需要做的是,当用户输入某个项目的数量时,它会将该数量与该特定项目的价格相乘,然后显示在总价字段中。然后,将该总价字段相加,得到小计。Price是从XML文件检索的一组数字。数量根据用户的不同而变化。他们不必购买所有物品 例:第1项数量:3:$10->30美元 数量:2项:5美元-->10美元 小计:40美元 所有这些都会在用户输入数量时发生。到目前为止,我将数据从XML检索到一个数组中。并将用户数量放入另一个数组中。但我不知道该怎么做。多谢各位 HTML代码:将一个数组的索引乘以另一个数组的相应索引。将所有结果相加。Javascript,javascript,xml,arrays,Javascript,Xml,Arrays,我有一张有数量、商品名称、价格和总价的表格。商品名称和价格是我将从XML文件中检索的信息。“数量”字段是用户可以输入任意数量的字段 我需要做的是,当用户输入某个项目的数量时,它会将该数量与该特定项目的价格相乘,然后显示在总价字段中。然后,将该总价字段相加,得到小计。Price是从XML文件检索的一组数字。数量根据用户的不同而变化。他们不必购买所有物品 例:第1项数量:3:$10->30美元 数量:2项:5美元-->10美元 小计:40美元 所有这些都会在用户输入数量时发生。到目前为止,我将数据从
<div id="order">
<table class="bottomBorder" id="torder">
<tr class="style3"><th align="center">Quantity</th>
<th width="200px">Item Description</th>
<th>Price</th>
<th>Total Price</th>
<script>
var xmlDoc = getXML();
var x=xmlDoc.getElementsByTagName("item");
for (i=0;i<x.length;i++)
{
var Qty = "Qty" + i;
var totalprice = "totalprice" + i;
document.write('<tr><td align="center">');
document.write('<input type= "text" id="' + Qty +'" name="txtQty" size="2" maxlength="4"/>');
document.write("</td><td>");
document.write(x[i].getElementsByTagName("name")[0].childNodes[0].nodeValue);
document.write("</td><td>");
document.write(x[i].getElementsByTagName("price")[0].childNodes[0].nodeValue);
document.write("</td><td>");
document.write('<span id="'+totalprice+'"></span>');
document.write("</td></tr>");
}
</script>
</table>
<table class="bottomBorder">
<tr>
<td width="323" class="style4" align="right" >Subtotal</td>
<td width="75" align="right" id="subtotal"></td>
</tr>
</table>
量
项目说明
价格
总价
var xmlDoc=getXML();
var x=xmlDoc.getElementsByTagName(“项目”);
对于(i=0;i假设您的两个数组由QtyValue
和Price
函数返回,您可以同时循环两个数组以获得小计。(它们保证长度相同,对吗?)
var prices=Price();
变量数量=QtyValue();
var小计=0;
对于(变量i=0;i
试试这个:
var total = 0;
if (Qty.length == arrPrice.length) {
for (var i = 0; i < Qty.length; ++i) {
total += (Qty[i] * arrPrice[i]);
}
}
alert(total);
var总计=0;
如果(数量长度==价格长度){
对于(变量i=0;i
是的,它们的长度相同。但是,用户get-to可以输入他们选择的任何项目的数量,因此他们可能跳过项目2,只需要项目1和项目3。我还需要显示每个项目的价格(数量*价格项)在添加小计之前,每一个项目都是对应的。我想不出来。数据的变化使我困惑。非常感谢您的帮助。当您在<代码> QTyValue<代码>中收集数量时,不要跳过空白字段,假设默认值(可能是0或1)。例如,在if(Qtys[i].value.length){…}
putelse{Qty.push(0);}
。这有帮助吗?我会用一条注释更新我的答案,说明如何显示每个项目的小计。嗯……理论上这应该是可行的,但它似乎将0替换为我的所有值……你还在努力吗?发布你的更新代码,我会尽力帮助你。谢谢你的回答。我使用代码的问题如果用户首先输入第3项的数量,它将乘以第1项的价格,而不是第3项的相应价格。你知道如何解决这个问题吗?我认为你需要为数量创建一个2D数组。因此,如果用户首先输入第3项的数量,你可以像数量[项目编号][项目价格]一样存储它也就是说,Qty[2][0]=1;
。希望你明白我的意思。如果用户只是以任意顺序输入数量,这是否有效?
var prices = Price();
var quantities = QtyValue();
var subtotal = 0;
for (var i = 0; i < prices.length; i++) {
var itemTotal = prices[i] * quantities[i];
// todo: display 'itemTotal' on page
subtotal += itemTotal;
}
// todo: display 'subtotal' on page
var total = 0;
if (Qty.length == arrPrice.length) {
for (var i = 0; i < Qty.length; ++i) {
total += (Qty[i] * arrPrice[i]);
}
}
alert(total);