2013-02-21 71 views
1

我想从多个游乐项目中获取总数和平均值。 现在我陷入了这一整天,首先我试着用span来围绕它,但我想也许用一个数组更好,希望有人能够帮助我找到缺失的部分。jQuery Sum数组

例子:http://jsbin.com/inapey/31/edit

<tbody id="rides"> 
    <tr> 
     <td class="muted"><small>Mr.</small></td> 
     <td>John</td> 
     <td>Smith</td> 
     <!-- Every ride of this person --> 
     <td class="ride_km" style="display:none;">225,75</td> 
     <!-- Sum & Average of this person --> 
     <td class="ride_total_km"></td> 
     <td class="ride_average_km"></td> 
    </tr> 
    <tr> 
     <td class="muted"><small>Mrs.</small></td> 
     <td>Jane</td> 
     <td>Smith</td> 
    <!-- Every ride of this person --> 
     <td class="ride_km" style="display:none;">150,300</td> 
     <!-- Sum & Average of this person --> 
     <td class="ride_total_km"></td> 
     <td class="ride_average_km"></td> 
    </tr> 
</tbody> 

jQuery的

$(document).ready(function(){ 
    var total = 0; 

    $('#rides tr').each(function() { 
    var RidesKM = $(this).fin('.ride_km').html().split(","); 
    var arr = jQuery.makeArray(RidesKM); 
    alert(arr); 

    var SumKM = ???; 
    var AveKM = ???; 

    /* Total KM's */ 
    $(this).find('.ride_total_km').html(SumKM); 
    /* Average KM's */ 
    $(this).find('.ride_average_km').html(AveKM.toFixed(0)); 

    }); 
}); 
+0

窝,我才意识到事情的“”是对每一个值的分隔符我还以为是小数点分隔符(在法国,我们使用一个逗号不是一段时间) – 2013-02-21 14:26:34

回答

3

*更新了答案。

Here's a fiddle.

下面的代码:

$(document).ready(function() { 
    $('#rides tr').each(function() { 
     var that = $(this); 
     var sum = 0; 

     that.find('.ride_km').each(function() { 
      var values = $(this).text().split(','); 
      $.each(values,function() { 
       sum += parseFloat(this); 
      }); 
      /* Total KM's */ 
      that.find('.ride_total_km').html(sum.toFixed(2)); 
      /* Average KM's */ 
      that.find('.ride_average_km').html((sum/values.length).toFixed(2)) 
     }); 
    }); 
}); 

这很奇怪,虽然你保存在一个隐藏的TD值。我会建议(如果你可以做的所有计算在JavaScript或如果可能从服务器(如果你使用的东西像PHP或其他)

+0

非常感谢你,我使用表达式引擎(这是PHP),我发现了一些数学的附加功能,但这并不适用于输出我有,所以我必须与隐藏的创意跨度... – Eddyfever 2013-02-21 14:44:43

0

如果我理解正确,你想每个人的总数在这种情况下,你不需要total变量:

$(document).ready(function(){ 
    $('#rides tr').each(function() { 
    var SumKM = 0; 
    var RidesKM = $(this).find('.ride_km').html().split(","); 

    for (i = 0; i < RidesKM.length; i++) { 
     SumKM += parseInt(RidesKM[i]); 
    } 

    var AveKM = SumKM/RidesKM.length; 

    /* Total KM's */ 
    $(this).find('.ride_total_km').html(SumKM); 
    /* Average KM's */ 
    $(this).find('.ride_average_km').html(AveKM.toFixed(0)); 
    }); 
});