将一个数组的索引乘以另一个数组的相应索引。将所有结果相加。Javascript

将一个数组的索引乘以另一个数组的相应索引。将所有结果相加。Javascript,javascript,xml,arrays,Javascript,Xml,Arrays,我有一张有数量、商品名称、价格和总价的表格。商品名称和价格是我将从XML文件中检索的信息。“数量”字段是用户可以输入任意数量的字段 我需要做的是,当用户输入某个项目的数量时,它会将该数量与该特定项目的价格相乘,然后显示在总价字段中。然后,将该总价字段相加,得到小计。Price是从XML文件检索的一组数字。数量根据用户的不同而变化。他们不必购买所有物品 例:第1项数量:3:$10->30美元 数量:2项:5美元-->10美元 小计:40美元 所有这些都会在用户输入数量时发生。到目前为止,我将数据从

我有一张有数量、商品名称、价格和总价的表格。商品名称和价格是我将从XML文件中检索的信息。“数量”字段是用户可以输入任意数量的字段

我需要做的是,当用户输入某个项目的数量时,它会将该数量与该特定项目的价格相乘,然后显示在总价字段中。然后,将该总价字段相加,得到小计。Price是从XML文件检索的一组数字。数量根据用户的不同而变化。他们不必购买所有物品

例:第1项数量:3:$10->30美元 数量:2项:5美元-->10美元 小计:40美元 所有这些都会在用户输入数量时发生。到目前为止,我将数据从XML检索到一个数组中。并将用户数量放入另一个数组中。但我不知道该怎么做。多谢各位

HTML代码:

    <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){…}
put
else{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);