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

Bookmarklet JavaScript日程表数据提取日期匹配问题修复求助

修正日期解析错误的Bookmarklet脚本

核心问题分析

你的脚本大概率是没有持续跟踪当前日期,或者日期行的匹配逻辑有漏洞——比如日期行的class/选择器不准确,导致部分日期切换被跳过,后续记录沿用了上一个错误的日期值。

修正思路

遍历所有表格行时,每遇到一个日期行就更新「当前日期」变量,之后每一条预约记录都直接使用这个变量,确保每条记录绑定正确的日期。

修正后的脚本示例

假设你的HTML结构中,日期行有date-row类,预约行有appointment-row类,以下是修正后的Bookmarklet代码:

javascript:(function(){
  // 初始化当前日期变量
  let currentDate = '';
  // 存储提取结果的数组
  const appointments = [];
  
  // 遍历所有表格行(根据实际结构调整选择器)
  document.querySelectorAll('.schedule-table tr').forEach(row => {
    // 判断当前行是否是日期行
    if (row.classList.contains('date-row')) {
      // 提取日期文本(根据实际HTML结构调整获取方式)
      currentDate = row.textContent.trim();
      return; // 跳过后续处理,直接下一行
    }
    
    // 判断当前行是否是预约记录行
    if (row.classList.contains('appointment-row')) {
      // 提取预约信息(根据实际HTML结构调整)
      const time = row.querySelector('.time-col').textContent.trim();
      const patient = row.querySelector('.patient-col').textContent.trim();
      const type = row.querySelector('.type-col').textContent.trim();
      
      // 将当前日期绑定到这条记录
      appointments.push({
        date: currentDate,
        time: time,
        patient: patient,
        type: type
      });
    }
  });
  
  // 输出结果(可替换为导出CSV等操作)
  console.table(appointments);
  alert(`共提取${appointments.length}条预约记录,已输出到控制台`);
})();

关键调整点

  • 持续跟踪日期:每遇到日期行就立即更新currentDate,确保后续所有预约记录都使用最新的日期值
  • 精准选择器:确认日期行和预约行的选择器(class/id/tag)完全匹配目标HTML结构,避免漏判或误判
  • 顺序遍历:必须按DOM顺序遍历行,保证日期行出现在对应预约行之前时能及时更新日期

针对你的场景的适配建议

  1. 打开目标页面的开发者工具(F12),检查日期行的具体特征:
    • 比如是否有特定class,或者包含日期文本的单元格有特殊属性
    • 修正脚本中row.classList.contains('date-row')这部分的判断逻辑,确保能准确识别所有日期行
  2. 检查预约行的结构,调整提取时间、患者等信息的选择器,确保和你的HTML片段匹配

测试验证

运行脚本后,在控制台(F12 → Console)查看输出的表格,确认每条记录的date字段是否和实际日期一致,比如8月3日的记录是否正确绑定了「8月3日」。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 04:33:10