【问题标题】:get all entries by column name: HTML table按列名获取所有条目:HTML 表
【发布时间】:2015-06-05 23:27:04
【问题描述】:

我有一个以下格式的 HTML 表格:-

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

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

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

$('#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"}]}

【问题讨论】:

  • 您的意思是nth-child(4)?另外,你说表是基于 JSON 数据创建的,为什么不从数据中提取必要的和平而不是依赖 DOM?
  • 但是我的 json 数据格式复杂.. 我可以在这里发布吗?
  • 是的。我认为它可能会引导我们找到最佳答案。
  • 请检查编辑.. 谢谢
  • 结果的预期格式是什么? { "english": { "passed": ["John", "Joe"], "failed": [] }, "french": { "passed": [], "failed": ["Jill"] } }? (codebeautify.org/jsonviewer/68b3e5)

标签: javascript jquery html


【解决方案1】:

我用名称标签创建每个包含主题名称的标签

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

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

这将返回所有在 name 属性中包含 subject1 的元素。

而不是name 属性,如果您使用data-subject 并将主题名称存储在该特定单元格中,那么

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

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

【讨论】:

    【解决方案2】:

    正如 cmets 中所讨论的,从原始源(在本例中为 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多