You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计指定类名下TD含特定值的TR元素数量?

统计符合条件的表格行(TR)数量

没问题,我来帮你搞定这个统计需求!下面分原生JavaScript和jQuery两种常用方案给你演示,以你提供的表格示例为例,比如我们要统计class="c2"且其下TD元素包含文本Animal的TR行数:

方案一:原生JavaScript

不需要依赖任何库,直接用浏览器自带的API实现:

// 定义目标类名和要匹配的文本
const targetClass = 'c2';
const targetText = 'Animal';

// 获取所有带有目标类名的TR元素
const targetRows = document.querySelectorAll(`tr.${targetClass}`);

// 初始化计数器
let matchCount = 0;

// 遍历每一行,检查是否包含目标文本的TD
targetRows.forEach(row => {
    // 将当前行的TD转换为数组,检查是否有匹配的文本
    const hasMatch = Array.from(row.querySelectorAll('td')).some(td => {
        // 用trim()去除首尾空格,避免空格干扰匹配
        return td.textContent.trim() === targetText;
    });
    if (hasMatch) {
        matchCount++;
    }
});

console.log(`符合条件的行数:${matchCount}`); // 示例中会输出1

如果需要不区分大小写的匹配,只需要把文本都转成小写再比较:

const hasMatch = Array.from(row.querySelectorAll('td')).some(td => {
    return td.textContent.trim().toLowerCase() === targetText.toLowerCase();
});

方案二:jQuery(更简洁)

如果你的项目已经引入了jQuery,代码会更简洁:

const targetClass = 'c2';
const targetText = 'Animal';

// 直接筛选符合条件的行,获取长度就是数量
const matchCount = $(`tr.${targetClass}:has(td:contains('${targetText}'))`).length;

console.log(`符合条件的行数:${matchCount}`); // 示例中输出1

注意:jQuery的:contains()是大小写敏感的

如果需要不区分大小写,可以扩展一个自定义选择器:

// 扩展不区分大小写的contains选择器
$.expr[":"].containsIgnoreCase = function(element, index, match) {
    return $(element).text().toLowerCase().indexOf(match[3].toLowerCase()) !== -1;
};

// 使用自定义选择器统计
const matchCount = $(`tr.${targetClass}:has(td:containsIgnoreCase('${targetText}'))`).length;

内容的提问来源于stack exchange,提问作者Satya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:32:34