我需要编写一个关于下个月最近12个月计算的代码,这样当用户输入当月或下个月的值时,他应该得到结果 这里计算如何
CA (jan 14) = (Avg of B.Y. 2001=100 for the past 12 months - 115.76)*100/115.76
CA (jan 14)=( 232.66-115.76)*100/115.76=100.009
所以每个月如果有人进入,我们应该通过上面的计算得到价值。 我试过用JavaScript编写某种代码,请在此链接中查看
http://jsfiddle.net/kundansingh/SLC5F/
B.Y。 2001 = 100 = 值将由用户输入 总共12个月 =过去11个月和当月的总价值为12个月 %增幅超过115.763 = 232.66-115.76 应用。 CA =(232.66-115.76)* 100 / 115.76
我需要动态地每个月如果输入下个月的值也应该显示结果...我创建的是一个月..请帮助我排序问题
答案 0 :(得分:1)
在这种情况下,我真的建议使用jQuery让你的生活更轻松,特别是因为你想要至少做一个for循环,如果不是两个。
您需要遍历每一行,获取之前的11个值,然后进行计算。
在你的jsFiddle中,以下代码应该有效。我已相应地编辑了你的jsFiddle:http://jsfiddle.net/SLC5F/1/
$('tr', '#order-table').each(function() {
var total = 0;
var $rows = $(this).prevAll();
// return if we don't have enough rows
// probably better to just add a class to the active rows instead,
// but it's not my job to format your code.
if ( $rows.length < 13) return;
$rows = $rows.slice(0, 11);
// again, would be better to add a class to active inputs instead of using
// a not() filter. you can do this yourself.
total += parseFloat( $(this).find('input').not('.row-total-input, [readonly]').val() );
$rows.each(function() {
total += parseFloat( $(this).find('input').not('.row-total-input').val() );
});
// return if total isn't a number
if ( isNaN(total) ) return;
var monthly_average = total / 12;
// again, would be better to add classes to these TDs instead of using eq()
// make sure you do this before using this script in a live application.
$('td', this).eq(2).text(total);
$('td', this).eq(3).text(Math.round(monthly_average * 100) / 100);
$('td', this).eq(4).text(Math.round(( monthly_average - 115.763 ) * 100 / 115.764 * 100) / 100);
});