Javascript 计算每行的价格

Javascript 计算每行的价格,javascript,jquery,Javascript,Jquery,我一直在计算每行的价格。如果我选择数量字段,它将为两行打印相同的价格 这是我的演示 先谢谢你 Html 产品 量 价格(元) 苹果(20美元) 0 1. 2. 3. 4. 5. 0 香蕉(15美元) 0 1. 2. 3. 4. 5. 0 全部的 1. 0 Javascript function totalamount() { var q = 0; var rows = document.getElementById('myTable').g

我一直在计算每行的价格。如果我选择数量字段,它将为两行打印相同的价格

这是我的演示

先谢谢你

Html


产品
量
价格(元)
苹果(20美元)
0
1.
2.
3.
4.
5.
0
香蕉(15美元)
0
1.
2.
3.
4.
5.
0
全部的
1.
0
Javascript

        function totalamount() {
        var q = 0;

        var rows = document.getElementById('myTable').getElementsByTagName("tbody")[0].getElementsByTagName("tr").length;

        for( var i = 0; i < rows; i++ ){
            var z = $('.amount').html();
            q +=z;
        }
        $('.total').html(z);
    }

    $(function () {
        $('.body').delegate('.product_quantities','change',function(){
            var tr = $(this).parent().parent();
            var qty = tr.find('.product_quantities option:selected').attr('value');
            var price = tr.data('price');

            var total = (price * qty);
            $('.amount').html(total);
            totalamount()
        });
    });
函数totalamount(){
var q=0;
var rows=document.getElementById('myTable').getElementsByTagName(“tbody”)[0].getElementsByTagName(“tr”).length;
对于(变量i=0;i
不确定这是否是您想要的结果。但是我已经编写了代码来正确地计算两个金额列的总和

刚刚将
totalamount
函数的底部更改为:

for( var i = 0; i < rows; i++ ){
    var z = $('.amount:eq(' + i + ')').html();

    if (!isNaN(z)) {
        q +=Number(z);
    }
}

$('.total').html(q);

因此,这两种计算方法都是可行的

改为:

tr.find('.amount').html(total);

循环遍历每个表数组,查找值并仅使用
$(v)将amount添加到该行中。查找('.amount')。文本(amt)。我想这对你有帮助

    function totalamount() {
        var q = 0;


        $('.body tr').each(function(index, v){
            var cost = Number($(v).data('price'));
          var qty = Number($(v).find('.product_quantities').val());
          if(!isNaN(cost) && !isNaN(qty)){
          var amt = Number(cost*qty);

          $(v).find('.amount').text(amt);

          q = q + amt
          console.log(qty, cost, q);}
        })
        $('.total').text(q);


    }

    $(function () {
        $('.body').delegate('.product_quantities','change',function(){

            totalamount()
        });
    });

谢谢大家,各位。它工作得很好。非常感谢@可好!记住标记为已接受和/或向上投票,这对你更合适。我编辑了它们,效果很好。谢谢@mrEthol
tr.find('.amount').html(total);
$('.amount').html(total);
tr.find('.amount').html(total);
    function totalamount() {
        var q = 0;


        $('.body tr').each(function(index, v){
            var cost = Number($(v).data('price'));
          var qty = Number($(v).find('.product_quantities').val());
          if(!isNaN(cost) && !isNaN(qty)){
          var amt = Number(cost*qty);

          $(v).find('.amount').text(amt);

          q = q + amt
          console.log(qty, cost, q);}
        })
        $('.total').text(q);


    }

    $(function () {
        $('.body').delegate('.product_quantities','change',function(){

            totalamount()
        });
    });