2015-04-01 53 views
1

,我有以下格式的HTML表: -获得通过列名的所有条目:HTML表格

+------+----------+----------+----------+ 
| name | subject1 | subject2 | subject3 | 
+------+----------+----------+----------+ 
| xxx | pass  | fail  | pass  | 
| yyy | pass  | pass  | pass  | 
| zzz | pass  | fail  | fail  | 
+------+----------+----------+----------+ 

该表是动态地从服务器获取JSON数据创建的。我使用包含主题名称的名称标签创建每个主题,因为主题数量不是常量。现在,我想要做的是具有与主题相对应的列表..说subject1 [],2等,这些列表将包含与该主题相关的通过/失败列表...然后,我可以计算通过次数/不适合该科目并绘制图形。

虽然我知道这:可用于获取所有行特定的列,

$('#mytable tbody td:nth-col(4)') 

如果列数是固定的这不会是有用的。 请让我知道如何使用jquery/JS完成此操作。 编辑: data.json :-(如果解析可以做到)

{"students": [{"student": John, "status": "pass", "subject": "english"},{"student": Joe, "status": "pass", "subject": "english"},{"student": Jill, "status": "fail", "subject": "french"}]} 
+0

你的意思是'第n个孩子(4)'?另外,你说这个表是基于JSON数据创建的,为什么不从数据中提取必要的和平而不是依赖于DOM? – haim770 2015-04-01 10:44:01

+0

但我的JSON数据是一个复杂的格式..我可以张贴在这里吗? – Tania 2015-04-01 11:38:45

+0

是的。我认为这可能会使我们得到最好的答案。 – haim770 2015-04-01 11:41:25

回答

1

正如评论中所讨论的那样,从原始来源(在这种情况下是一个JavaScript对象)中汇总数据比从其可视化表示(在这种情况下为DOM)中提取数据容易得多。

要组根据每个学生数据的subject数据:

var res = {}; 

for (var i in data.students) 
{ 
    var item = data.students[i]; 
    var subject = item.subject; 

    if (!res[subject]) 
     res[subject] = { passedCount: 0, failedCount: 0 }; 

    if (item.status == 'pass') 
     res[subject].passedCount++; 
    else 
     res[subject].failedCount++; 
} 

Fiddle

2

我创建的每个包含主题

的名称名称标签作为你提在您创建的所有元素中的名称标签,可以使用以下选择器:

$("[name='subject1']") 

T他会向你返回所有包含其名称属性中的subject1的元素。

相反name属性的,如果使用data-subject和主题名称,在那个特定的细胞储存,然后

$("[data-subject='subject1']") 

这将返回包含subject1所有单元格。

相关问题