关于HTML表单中的Fly Table计算

时间:2012-06-18 15:26:43

标签: javascript jquery forms

我有一个简单的HTML表格/表格,其中一列(排名)有一个带有2个选项的选择菜单:中等或高。我需要找到排名列中的单元格=“中等”的所有行,并计算同一行中的另一个单元格的总数(平均小时数/周),并对单元格=“高”的所有行重复此操作。这是一个JS小提琴,显示一个空的表格/表格样本:

http://jsfiddle.net/53zfb/4/

请注意,行数不会提前修复 - 可能有1个或更多。我有一个脚本,根据“小时/周”和“周/年”字段的输入计算平均时数/周,但无法计算2个排名中的每一个的总计。

只是为了澄清表单是否有这些选择:

Row 1: Ranking = "Moderate" Average Hours/Week = 2
Row 2: Ranking = "High" Average Hours/Week = 4
Row 3: Ranking = "Moderate" Average Hours/Week = 6
Row 4: Ranking = "High" Average Hours/Week = 8

Total Moderate单元格最终应为*(6 + 2),Total High单元格最终应为12(4 + *)。理想情况下,只要排名,小时/周或周/年值发生任何变化,就会发生这种情况。

这是我到目前为止所提出的不适合我的事情:

var moderateTotal = 0;
        var highTotal = 0;
        $("#activities").find("tr").each(function() {
    var tr = $(this);
    var level = tr.find("td:nth-child(2)").html();
    var value = tr.find("td:nth-child(5)").html();

    switch(level)
    {
        case "Moderate":
            moderateTotal += value*1;
        break;
        case "High":
            highTotal += value*1;
        break;
    }
});

$("#moderateTotal").val(moderateTotal);
    $("#highTotal").val(highTotal);

    });

1 个答案:

答案 0 :(得分:0)

考虑将您的活动更改为onChange=MyFunc()<input>标签内的<select>,然后从中调用您的功能。该函数只需循环遍历您的控件(由JSFiddle已经增加了ID)。 If语句将遍历控件循环,找到所有Risk#="Moderate",其中Risk#是每个Risk选择组的唯一ID(与JSFiddle不同),并将适当的值添加到运行总和中。

你没有在这里询问任何具体内容,所以我认为你只是需要一些帮助,这个具体的代码并不困难。您通过JSFiddle展示了一些很好的编码知识。

可能的Javascript:

function MyOnChangeEvent() {
   var highTotal, modTotal;
   var rowCount, i;
   highTotal=0;
   modTotal=0;

   rowCount=5; //However many rows you have

   for (i=1; i<rowCount+1; i++) {
      switch (document.getElementById("C"+i)) {
         case "Moderate": modTotal++;
         case "High": highTotal++;
      }
   }

   document.getElementById("HighTotal") = highTotal;
   document.getElementById("ModerateTotal") = modTotal;
}

由于我没有对它进行测试,因此可能会进行调试,但这个想法就在那里。通过document.getElementById(<ID OF TEXT BOXES>)获取值并执行计算。