如何动态地总结javascript中的最近12个月的金额

时间:2014-02-14 13:46:36

标签: javascript

我需要编写一个关于下个月最近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

我需要动态地每个月如果输入下个月的值也应该显示结果...我创建的是一个月..请帮助我排序问题

1 个答案:

答案 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);
});