代码之家  ›  专栏  ›  技术社区  ›  JP Silvashy Gautam Rege

使用javascript添加浮动

  •  9
  • JP Silvashy Gautam Rege  · 技术社区  · 15 年前

    我使用的是jquery,我想总结一下表列中的值,一切似乎都正常,但返回的值是一个字符串,其中添加了如下所有值: 123.5013.0012.35

    我怎样才能恰当地求和这些呢?

    var totals
    
    $(".add").each(function(i) {
      totals += parseFloat($(this).text()).toFixed(2);
    });
    
    console.log(totals);
    
    6 回复  |  直到 11 年前
        1
  •  16
  •   Community CDub    8 年前

    这里有多个错误。一种方法是不将总数初始化为数字,比如0.0。第二个问题是没有意识到.tofixed()返回一个字符串。javascript将字符串连接在一起,而不是添加数字。

    基本上相同的问题已经被问过了 javascript-why-does-this-produce-and-ugly-string-i-would-like-currency 答案应该能帮你解决这个问题。

        2
  •  5
  •   Community CDub    8 年前

    这里有一个工作版本(在火狐3.5中测试):

    <!DOCTYPE html>
    <html>
    <head>
        <title>Sum of nubers</title>
    
        <script src="jquery.js" type="text/javascript"></script>
        <script type="text/javascript">
    
            $(function(){
                var total = 0;
                $(".add").each(function(){
                    total += parseFloat($(this).text());
                });
                alert(total.toFixed(2));
            });
        </script>
    </head>
    <body>
    <div class="add">23.4567</div>
    <div class="add">98.7654</div>
    </body>
    </html>
    

    这只是很多方法中的一种。请查看此问题以了解其他几种方法:

    How to convert strings to floats

        3
  •  3
  •   just somebody    15 年前
    var totals
    
    $(".add").each(function(i) {
      totals += parseFloat($(this).text());
    });
    
    console.log(totals.toFixed(2));
    

    可能使用Math.Round、Floor或Ceil

        4
  •  3
  •   Maulik Kanani    11 年前

    简单的试试这个。它对我有用。

        var totals= 0;
        $(".add").each(function() {
            if (jQuery(this).val() != '')
                totals= Number(totals) + Number(jQuery(this).val()); 
        });
       console.log(totals);
    
        5
  •  2
  •   Shawn    15 年前

    看起来像是在添加字符串。尝试设置var totals=0;

        6
  •  2
  •   Aivils    14 年前
      function update_total() {
        var total = 0.0;
        $('.invoice_service_price').each(function(index){
          var val=parseFloat($(this).html().trim());
          if(!isNaN(val)) total += val;
        });
        alert("total="+total);
      };