我试图在用户输入税金时获得g_total。到目前为止,它没有返回任何值。到目前为止,我已经尝试过这个东西

时间:2019-12-05 17:41:39

标签: jquery html

我的刀片

           <td style="border:none"></td>
           <td style="border:none"></td>
           <td style="border:none"></td>
           <td><b>Total</b></td>
           <td><input type="text" name="total" class="form-control total" readonly></td>
           </tr>
           <tr>
           <td style="border:none"></td>
           <td style="border:none"></td>
           <td style="border:none"></td>
           <td><b>Sales Tax</b></td>
           <td><input type="text" name="tax" class="form-control tax" ></td>
           </tr>
           <td style="border:none"></td>
           <td style="border:none"></td>
           <td style="border:none"></td>
           <td><b>Grand Total</b></td>
           <td><input type="text" name="g_total" class="form-control g_total" readonly></td>

我正在使用jquery作为

$('tbody').delegate('.qty,.price,.dis,.tax','keyup',function(){
    var tr=$(this).parent().parent();
    var qty =tr.find('.qty').val();
    var price =tr.find('.price').val();
    var dis =tr.find('.dis').val();
    var amount =(qty * price)- (qty * price * dis)/100;
    tr.find('.amount').val(amount);
    total();
    var tax =tr.find('.tax').val(); 
    var g_total =total() + (total() * tax)/100;
    tr.find('.g_total').val(g_total);
});

对于税收和g_total,我正在使用此方法。

$('tfoot').delegate('.tax','keyup',function(){
    var tr=$(this).parent().parent();
    total();
    var tax =tr.find('.tax').val(); 
    var g_total =total()+ (total * tax)/100;
});

我正在使用此方法的全部功能。

//--------------------For total----------
function total()
{
    var total=0;
    $('.amount').each(function(i,e){
        var amount = $(this).val()-0;
        total+=amount;
    })
    $('.total').val(total);
};

除了g_total之外,我所有的值都正确。没有显示变量g_total

1 个答案:

答案 0 :(得分:1)

您正在尝试使用函数的结果:

var g_total = total() + (total * tax) / 100;

但是您的函数不返回任何东西。看来您要返回计算出的值:

function total()
{
    var total=0;
    $('.amount').each(function(i,e){
        var amount = $(this).val()-0;
        total+=amount;
    })
    $('.total').val(total);
    return total; // <---- here
};

顺便说一句,您还要两次调用该函数,这很浪费:

total();
var tax = tr.find('.tax').val(); 
var g_total = total() + (total() * tax) / 100;

相反,将结果存储在变量中并重新使用结果:

var calculatedTotal = total();
var tax = tr.find('.tax').val(); 
var g_total = calculatedTotal + (calculatedTotal * tax) / 100;

(请注意,并不是100%清楚您的变量/函数等中哪些是有意的,错别字等。总的来说,代码很难遵循,而调用一切“ total”并不容易。 t帮助。但是希望您至少能将结果存储在变量中,以免一遍又一遍地重新计算。)