1

我有一个包含数量、项目名称、价格和总价的表格。商品名称和价格是我将从 XML 文件中检索的信息。数量字段是用户可以输入他们想要的任何数量的地方。

我需要做的是当用户输入某个商品的数量时,它将采用该数量并乘以该特定商品的价格,然后将其显示在“总价”字段中。然后,该总价格字段将被加在一起以给出小计。价格是从 XML 文件中检索的一组数字。数量根据用户而变化。他们不必购买所有物品。

例如:数量:3 项目 1:10 美元 -> 30 美元 数量:2 项目 2:5 美元 --> 10 美元 小计:40 美元所有这一切都会在用户输入他们的数量时发生。到目前为止,我将 XML 中的数据检索到一个数组中。并将用户 qty 放入另一个数组。但我不知道如何使它工作。谢谢你。

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>

Javascript代码:

    function QtyValue()
    {   
var Qtys =document.getElementById('torder').getElementsByTagName('input');
var Qty = [];//create array
var error2 = document.getElementById("errorinfo2");

for (var i = 0, l = Qtys.length; i < l; ++i) { //looping through txtqty input 
       if (Qtys[i].value.length) {
        Qty.push(Qtys[i].value); //pushing value into Qty array
        }
}

if(Qty.every(isNumeric) /*&& Qty.length!==0*/) //check to see if info entered in array Qty is a number and is not empty
{
  return Qty;
}else{
     error2.style.display="block";
     error2.innerHTML = "*Please enter a valid number for your quantity";
     return false;
}
    }

    //Getting value for price from productlist.xml into an array
    function Price()
    {
var xmlDoc = getXML();

// Pull out the quote and author elements
var nPrice = xmlDoc.getElementsByTagName('price');

    // Create our two arrays
var arrPrice=[];

    // Loop through each quote elements yanking out the values and pushing them into the array
    for (i=0; i<nPrice.length; i++)
    {
         arrPrice.push(nPrice[i].childNodes[0].nodeValue);
    }
    return arrPrice;
        }
4

2 回答 2

0

假设您的两个数组由QtyValueandPrice函数返回,您可以同时遍历这两个数组以获得小计。(保证它们的长度相同,对吗?)

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
于 2012-12-09T06:11:46.800 回答
0

尝试这个:

var total = 0;

if (Qty.length == arrPrice.length) {
    for (var i = 0; i < Qty.length; ++i) {
        total += (Qty[i] * arrPrice[i]);
    }
}

alert(total);
于 2012-12-09T06:15:43.860 回答