0

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

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);

    });
4

1 回答 1

0

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

你在这里没有问任何具体的问题,所以我认为你只是需要一些帮助来解决这个问题,具体的代码并不难。您使用 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>)并执行计算。

于 2012-06-18T15:36:52.207 回答