我有一个简单的HTML表格/表格,其中一列(排名)有一个带有2个选项的选择菜单:中等或高。我需要找到排名列中的单元格=“中等”的所有行,并计算同一行中的另一个单元格的总数(平均小时数/周),并对单元格=“高”的所有行重复此操作。这是一个JS小提琴,显示一个空的表格/表格样本:
请注意,行数不会提前修复 - 可能有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);
});
答案 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>)
获取值并执行计算。