如何在动态列表中添加多个数字?

时间:2014-07-23 14:53:58

标签: javascript jquery

所以我一直在搜索和重新搜索这个并且似乎无处可去。

我的代码包含大量数据,当我点击某个项目时,该项目会形成一个价格新的列表。我试图让新列表中的价格形成一个总数,但我对jQuery不是很好,所以我只能显示第一个列表项目的价格,我不确定我如何让它循环遍历我的所有.textbox以添加所有数字而不仅仅是第一个数字。

所以这就是我到目前为止:

$('.itemproduct').click(function () {
    var product = $(this).find('.product').html();
    var price = $(this).find('.price').html();
    $("#list").append('<tr id="help">' + '<td>' + product + '</td>' + '<td class="move add">' + '<input type="text" class="textbox" value="' + price + '"/>' + '</td>' + '</tr>');
    var num = parseFloat($(".textbox").val());
    var new_num = $("#total").val(num.toFixed(2));
});

JSFiddle

2 个答案:

答案 0 :(得分:0)

您需要添加一个跟踪总计的变量,并迭代文本框以计算总计,然后在“#total”框中显示总计。就这样:

工作小提琴:http://jsfiddle.net/8d74n/4/

$('.itemproduct').click(function () 
{
    var product = $(this).find('.product').html();
    var price = $(this).find('.price').html();
    var total = 0.00;

    $("#list").append('<tr id="help">' + '<td>' + product + '</td>' + '<td class="move add">' + '<input type="text" class="textbox" value="' + price + '"/>' + '</td>' + '</tr>');

    $( '.textbox' ).each( function( ) 
    {
        var itemPrice = parseFloat( $( this ).val( ) );
        total += itemPrice;
    });

    total = total.toFixed( 2 );
    $( '#total' ).val( total );    
});

编辑-----------

只是跟小提琴鬼混,注意到我得到一个舍入错误,总数开始变成'6.58999999999999999996'这样的数字为了解释这个,我添加了'total = total.toFixed(2); 还更新了小提琴版

答案 1 :(得分:0)

或试试这个:

$('.itemproduct').click(function () {

    var product = $(this).find('.product').html();
    var price = $(this).find('.price').html();

    $("#list").append('<tr id="help">' + '<td>' + product + '</td>' + '<td class="move add">' + '<input type="text" class="textbox" value="' + price + '"/>' + '</td>' + '</tr>');

    var num = parseFloat($(".textbox").val());

    createTotal();    

});

function createTotal(){   
    var total = 0.0;
    $('#list tr').each(function(key, val){        
        total += parseFloat($(val).find('input').val());
    });
    $("#total").val(total.toFixed(2));
}

http://jsfiddle.net/8d74n/5/