如何用JavaScript移除表格行日期并过滤非当日记录
解决方案
要实现你的需求,我们可以通过定位表格行+日期匹配+文本处理的方式完成,完全不需要依赖动态生成的td id/class,具体代码和步骤如下:
核心思路
- 利用表格固定的
id="iFlightTable"获取所有数据行 - 生成和td中格式一致的当日日期字符串(
MM-DD-YY) - 遍历每一行,提取第4个td中的时间和日期内容
- 过滤移除非当日行,同时保留时间、清除日期文本
完整代码
// 获取表格内所有数据行 const tableRows = document.querySelectorAll('#iFlightTable tbody tr'); // 生成当日的MM-DD-YY格式字符串(匹配td中的日期格式) const today = new Date(); const formattedToday = `${String(today.getMonth() + 1).padStart(2, '0')}-${String(today.getDate()).padStart(2, '0')}-${String(today.getFullYear()).slice(-2)}`; // 遍历处理每一行 Array.from(tableRows).forEach(row => { // 定位到时间+日期所在的第4个td(索引从0开始计数) const timeDateTd = row.querySelectorAll('td')[3]; if (!timeDateTd) return; // 容错:结构异常时跳过该行 // 分割时间和日期(td内用 分隔,对应Unicode编码\xa0) const [timePart, datePart] = timeDateTd.textContent.trim().split('\xa0'); if (!datePart) return; // 判断是否为当日记录 if (datePart !== formattedToday) { // 移除非当日行 row.remove(); } else { // 仅保留时间部分,替换td内容 timeDateTd.textContent = timePart.trim(); } });
关键细节说明
- 无依赖定位:通过表格固定ID和td索引定位目标列,完全避开动态生成的id/class
- 日期格式匹配:严格对齐td中的
MM-DD-YY格式,确保过滤逻辑准确 - 实体处理:用
\xa0替代 进行分割,避免HTML实体对文本处理的干扰 - 容错机制:加入空值判断,防止表格结构异常导致代码报错
内容的提问来源于stack exchange,提问作者Rodnee
相关产品推荐
相关产品推荐

