Javascript HTML格式的动态表格计算

Javascript HTML格式的动态表格计算,javascript,jquery,forms,Javascript,Jquery,Forms,我有一个简单的HTML表单/表格,有一列排名,有一个选择菜单,有两个选项:中等或高。我需要找到排名列中的单元格=中等的所有行,并计算同一行中另一个单元格的总数平均小时/周,然后对单元格=高的所有行重复此操作。下面是一个JS提琴,显示了一个空表单/表格示例: 请注意,行数不会预先固定-可以有1行或更多行。我有一个脚本,可以根据输入到“小时/周”和“周/年”字段中的数据计算平均每周小时数,但无法让它同时计算两个排名中每个排名的总数 仅澄清表格是否有以下选择: Row 1: Ranking = "Mo

我有一个简单的HTML表单/表格,有一列排名,有一个选择菜单,有两个选项:中等或高。我需要找到排名列中的单元格=中等的所有行,并计算同一行中另一个单元格的总数平均小时/周,然后对单元格=高的所有行重复此操作。下面是一个JS提琴,显示了一个空表单/表格示例:

请注意,行数不会预先固定-可以有1行或更多行。我有一个脚本,可以根据输入到“小时/周”和“周/年”字段中的数据计算平均每周小时数,但无法让它同时计算两个排名中每个排名的总数

仅澄清表格是否有以下选择:

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
总中等单元格的值应为*6+2,总高单元格的值应为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);

    });

考虑在和标签中将事件更改为onChange=MyFunc,然后从中调用函数。该函数只需在JSFIDLE已经增加了ID的控件之间循环。If语句将遍历控制循环,找到all Risk=medium,其中Risk是一个唯一的ID,不同于每个风险选择组的JSFiddle,并将适当的值添加到运行总和中

你在这里没有问任何具体的问题,所以我认为你只是需要一些想法方面的帮助,具体的代码并不难。您用JSFIDLE演示了一些很好的编码知识

可能的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。ID必须是唯一的。另外,如果您将每周输入元素的小时数指定为一个不同的类,那么通过jQuery计算也会更容易。我添加了一些我正在使用的代码,但这些代码不起作用-如果您能看一下并提供一些建议,我将不胜感激。多谢了,它会出错吗?给出任何结果,即使是意外/错误的结果?不,我什么也没有得到-有一次它将总数设置为0,所以发生了一些事情。我已经更新了JSFIDLE,以显示唯一的ID。老实说,我以前没有使用过jQuery库,因此我可能无法理解确切的代码,但我将尝试编写一点我的看法,仅使用javascript修改我的答案。将上面的MyOnChangeEvent添加到。对于我发现的这些东西,一个很好的调试过程是让函数提醒您一些值,例如可能让它提醒Document.getElementByIdC+I;以确保从代码中获得所需的内容。