计算表行平均数和总数在同一时间
我试图找出计算平均在飞行表行,然后同时更新总为所有同类型行所需要的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新手。
我尝试用不同的方式,但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是一样的你的
非常感谢,看起来像它将工作一种享受。 – user982124 2012-08-14 12:10:59
@ user982124谢谢;很高兴有用 – 2012-08-14 12:13:22
作为一个侧面说明:不要使用'活()',它已经从1.7版本过时,用'取代的()',由于它的许多弊端。 on()可以完全满足所有的绑定需求。如果你使用jQuery pre 1.7,使用'bind()'或'delegate()'。看到这个职位的详细信息:http://*.com/questions/11148019/what-are-the-significant-differences-among-sel-bindclick-sel-click/11148053#11148053 – Nope 2012-08-01 21:27:51