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

网页抓取犯罪表格:基于innerHTML中color元素修改bonus变量失败

问题分析与解决方案

核心问题排查

你的代码存在几个关键错误,导致无法正确识别color元素并设置bonus:

  • 变量名拼写错误:代码中误用crime.Data[3],实际定义的数组是crimeData,拼写错误导致无法访问数组内容
  • 常量无法重新赋值:const bonus声明后不能修改值,需改为let bonus
  • 纯文本提取错误:直接用x.innerHTML会保留HTML标签,要提取纯文本需用jQuery的text()方法
  • 逻辑覆盖问题:三个独立if语句会依次覆盖bonus值,建议用else if避免后续条件覆盖前置结果

修正后的代码片段

let checkCrimes = {
    "check": function() {
        if (user.stamina < 690) {
          let randomTimer = Math.floor(Math.random() * 300 + 900);
          checkCrimes.queue(randomTimer);
        } else if ($(gameDocument).find('#crimebubble').length) {
          let crimeCooldown = $(gameDocument).find("#crimebubble>.countdown").eq(0).text().split(":");
          crimeCooldown = crimeCooldown.map((x, i) => {
            if (i === 0) {
              return Number(x) * 60;
            } else {
              return Number(x);
            }
          });
          crimeCooldown = crimeCooldown.reduce((a, b) => a + b);
          checkCrimes.queue(crimeCooldown);
        } else if ($(gameDocument).find('#form_crimes').length) {
          let lastPostTime = localStorage.getItem('lastPostTime') || 0;
          if ($(gameDocument).find('#form_crimes input[type="radio"]').length > 10) {
            // Handle other cases or skip if necessary
          } else {
            let crimeList = [];
            $(gameDocument).find('#form_crimes tbody tr').each(function() {
              // 提取每个td的纯文本,用于最终存储
              const crimeData = $(this).find('td').toArray().map(x => $(x).text().trim());
              // 保留原始innerHTML,用于检测color样式
              const crimeHtml = $(this).find('td').toArray().map(x => x.innerHTML);

              if (crimeData.includes('--')) {
                return; // 排除包含"--"的条目
              }
              let bonus = "testfailed";
              // 修正变量名,用crimeHtml检测color元素
              if (crimeHtml[3].includes('color')) {
                bonus = "Stealth"
              } else if (crimeHtml[2].includes('color')) {
                bonus = "Defense"
              } else if (crimeHtml[1].includes('color')) {
                bonus = "Offense"
              }

              // trimmedCrimeData存入纯文本内容
              const trimmedCrimeData = [crimeData[1], crimeData[2], crimeData[3], crimeData[6], bonus];

              crimeList.push(trimmedCrimeData);

            });
        }
    }
};

关键修改说明

  1. 分离文本与HTML:同时提取crimeData(纯文本)和crimeHtml(原始HTML),既满足存入纯文本的需求,又能准确检测color样式
  2. 修正变量与赋值规则:将const bonus改为let bonus,修正crime.Data为crimeHtml,确保变量可修改且能正确访问
  3. 优化逻辑判断:用else if确保只有第一个匹配的条件生效,避免后续条件覆盖已设置的bonus值
  4. 纯文本提取优化:使用$(x).text().trim()去除HTML标签和多余空格,得到干净的文本内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 08:17:57