【问题标题】:Updating javascript array data via input field通过输入字段更新 javascript 数组数据
【发布时间】:2013-07-16 01:48:35
【问题描述】:

我正在尝试创建一个购物车,该购物车构建一个数组以发送到服务器。我无法弄清楚的部分是允许用户通过一个输入字段来更改数量,该输入字段更新了 basketItems 数组中的“数量”值。

我可能做错了,但希望你们中的一个天才可以帮助我。

var basketItems = [
    { itemName:"Item 1", price:1.00, quantity:0 },
    { itemName:"Item 2", price:2.00, quantity:0 },
    { itemName:"Item 3", price:3.00, quantity:0 }
];

var basketItemsTotal = 0.00;

function CalcBasketTotal() {
       for (i=0;i<basketItems.length;i++) {
           if (basketItems[i].quantity > 0) {
               basketItemsTotal = basketItems[i].price * basketItems[i].quantity;
           }
       }
}

function PopulateBasketItems() {
      for (i=0;i<basketItems.length;i++) { 
          basketTable.innerHTML += 
           '<tr><td>' + basketItems[i].itemName + '</td>' +
           '<td>$' + basketItems[i].price + '</td>' +
           '<td><input value="' + basketItems[i].quantity + '"></td>' +
           '<td>$' + basketItems[i].price * basketItems[i].quantity + '</td></tr>';
      }
}

奖励:最终,我试图让这个脚本将这个数组连同总数一起发送给服务器,但首先要做的是!

【问题讨论】:

    标签: javascript arrays input shopping-cart


    【解决方案1】:

    你的问题在这里:

    function CalcBasketTotal() {
       for (i=0;i<basketItems.length;i++) {
           if (basketItems[i].quantity > 0) {
               basketItemsTotal = basketItems[i].price * basketItems[i].quantity;
           }
       }
     }
    

    修复:(将 = 替换为 += 到总计)

    function CalcBasketTotal() {
       for (i=0;i<basketItems.length;i++) {
           if (basketItems[i].quantity > 0) {
               basketItemsTotal += basketItems[i].price * basketItems[i].quantity;
           }
       }
    }
    

    【讨论】:

    • 谢谢Thanh。我应该如何调用 CalcBasketTotal 函数? Onchange 属性?事件监听器?我已经探索了这些选项,但无法弄清楚。
    • 您可以在更改数组时调用。如果您想添加 onchange 属性,这仅适用于表单输入元素。
    猜你喜欢
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    相关资源
    最近更新 更多