2012-08-01 103 views
1

我試圖找出計算平均在飛行錶行,然後同時更新總爲所有同類型行所需要的JavaScript。下面是說明了這個簡化的jsfiddle:計算錶行平均數和總數在同一時間

http://jsfiddle.net/fmdataweb/5ZtQZ/3/

用戶可以從下拉列表中選擇任何類型的水果,然後輸入編號和星期。例如,如果他們選擇「Apple」並輸入5作爲數字,並且我想自動計算平均數,那麼在這種情況下的平均數爲2.5(數字*周/ 52)。

我還要再像自動全爲同一類型的水果選擇的平均值。目前它總計數字列 - 我需要將其更改爲「平均值」列,並在計算平均值後進行此操作。因此,如果用戶在多行中選擇了蘋果,那麼它會查找所有實例並在「平均值」列中總計該值。

我得從另一個文件,將制定出平均一些代碼,但我有麻煩了2個腳本組合成1,或知道如果這是最好的選擇或以其他方式如何有2個獨立的腳本。下面是一些僞代碼,我發現計算平均值:

$("#fruit input").live("keyup", function(){ 
var id = this.id.match(/\d+/); 
var number = (($("#number"+id).val() * $("#weeks"+id).val() )/52); 
var rounded = Math.round(number * 10)/10; 
$("#average"+id).val(rounded); 

樂於使用的ID如果讓一切easer。感謝任何人都可以啓發我如何做到這一點,或者如果你能指出任何類似的例子。我在這個階段是一個Javascript新手。

+0

作爲一個側面說明:不要使用'活()',它已經從1.7版本過時,用'取代的()',由於它的許多弊端。 on()可以完全滿足所有的綁定需求。如果你使用jQuery pre 1.7,使用'bind()'或'delegate()'。看到這個職位的詳細信息:http://stackoverflow.com/questions/11148019/what-are-the-significant-differences-among-sel-bindclick-sel-click/11148053#11148053 – Nope 2012-08-01 21:27:51

回答

1

我嘗試用不同的方式,但SEMM工作:

迭代在TR細胞,和()與.MAP選擇的每個選項的總和計算

這是JS:

$('#fruits') 
    .on('change', 'select', calc) 
    .on('keyup', 'input', calc); 

function calc(){ 

    $('#fruits tr:has(.fruit)').each(function(i,v){ 

     var $cel = $(v.cells); 

     var $fruit = $cel.eq(1).find('option:selected').val(); 
     var $numb = $cel.eq(2).find('input').val(); 
     var $weeks = $cel.eq(3).find('input').val(); 
     var $avg = ($numb * $weeks)/52; 

     $cel.eq(4).find('input').val($avg); 

    }); 

    var tot = {}; 

    $('#fruits tr:has(.fruit) option:selected') 
       .map(function(i){ 
        var el = $(this).val(); 
        var qty = parseFloat($('#fruits tr:has(.fruit)').eq(i).find('td:last input').val()); 
        if (!tot.hasOwnProperty(el)) { 
         tot[el] = 0;    
        } 
        tot[el] += qty 
        return tot; 
       }).get(); 

    //console.log(tot); 
    $('#sumApple').text(tot.Apple); 
    $('#sumBanana').text(tot.Banana); 
    $('#sumMango').text(tot.Mango); 

} 

而且THIS是小提琴

PS:我沒有做數字控制,BU是一樣的你的

+0

非常感謝,看起來像它將工作一種享受。 – user982124 2012-08-14 12:10:59

+0

@ user982124謝謝;很高興有用 – 2012-08-14 12:13:22