jQuery获取数据并进行总结

时间:2013-02-05 18:42:09

标签: javascript jquery

我想要做的就是检查每个输入的价格,从中得出一笔钱。

这是我的代码

    function totalSum(e) {
    e.preventDefault();
    var unit = $("input:checked").parent("dt").siblings("dd").find("span"); 
    total = 0;
    $.each(unit, function(index, obj){
        total += parseInt($(obj).text(), 10);
    });
    $("#totalPrice").html('<span class="count">€ ' + total + '</span> €');
}

每个单位都在其范围内找到。 Total设置为0.我尝试在每个选中的对象上调用parseInt,然后在span中添加total。在HTML中,价格如下:

    <dd><span class="costo">€199</span></dd>

所以你看到有欧元标记。我担心它无法解析,是吗?因为没什么变化!我该怎么写呢? 提前致谢

好的,我感到很惭愧,但我无法让它发挥作用。我决定把代码放在最低限度,所以我试着这样做

    <body>
    <div class="bla"><span class="count">1</span></div>
    <div class="bla"><span class="count">1</span></div>
    <div class="bla"><span class="count">1</span></div>

    <div id="total"></div>
    <script type="text/javascript" src="js/jquery-1.9.0.min.js" /></script> 
    <script>
    $(document).ready(function(){


    function sum() {
        var prices = $("div.bla").find(".count");
        total= 0;
        $.each(prices, function(index, obj){
    total += parseFloat($(obj).text());
});

$("#total").html('<span class="count">'+total +'</span> €');
    };

});

这应该有用,但什么都没有出现。有人可以这么好告诉我出了什么问题吗?!

4 个答案:

答案 0 :(得分:1)

您只需从文本中删除该单位:

var text = $(obj).text().replace(/[€\$]/,''); // add other units if needed
total += parseInt(text, 10); // are you sure you don't prefer parseFloat ?

或者,如果您只想保留数字+-,请执行

var text = $(obj).text().replace(/[^\d\-\+]/g, '');

答案 1 :(得分:1)

您只需替换任何非数字字符:

total += parseInt($(obj).text().replace(/[^\d.-]/, ''), 10);

此外,您可以unit.each()代替$.each(unit,但这对您尝试做的事情没有任何影响。

答案 2 :(得分:0)

更改你的parseInt以跳过第一个字符。

total += parseInt($(obj).text().substring(1),10);

答案 3 :(得分:0)

经过几天尝试和阅读最佳方式,我相信这可能是我想要实现的优雅解决方案:)

$("input").on("click", function() {
    var j = $("input:checked");
    t = 0;
    $(j).each(function() {

        t += parseInt(this.value, 10);
    });
    $("#total").html("<span>€ " + t + "</span>");
    });