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

JavaScript表格状态判断逻辑异常:无法按预期返回对应状态值求助

JavaScript表格状态判断逻辑异常:无法按预期返回对应状态值求助

看起来你的思路完全没问题,但代码里有几个细节问题导致了它总是返回1,我帮你梳理并修正一下:

问题分析

  1. errorCount未初始化:你在使用这个变量前没有声明并赋值为0,这会导致执行errorCount++时抛出错误,或者判断errorCount >=1时得到非预期的结果,最终无法触发返回2的逻辑。
  2. 状态判断顺序不合理:应该优先检查最高优先级的状态(error),再依次处理warning和success——虽然你遇到error时直接return,但把高优先级判断放在前面能让逻辑更清晰,避免低优先级状态先干扰变量值。
  3. 冗余的条件判断:比如highestValue < 0这类判断没必要,因为我们只需要保留当前最高优先级的状态值(优先级:2(error)> 1(warning)> 0(success))。

修正后的代码

function checkTableData() {
    var allTables = $('#tableBody');
    var highestValue = -1;
    // 初始化errorCount为0
    var errorCount = 0;

    for (var i = 0; i < allTables.length; i++) {
        var table = allTables[i];
        var trs = $(table).find('tr');

        for (var j = 0; j < trs.length; j++) {
            var tr = trs[j];
            var dataMode = $(tr).attr('data-mode');
            var dataPure = $(tr).attr('data-pure');

            // 优先检查最高优先级的error状态
            if (dataMode === 'error') {
                console.log('检测到error,返回状态2');
                // 只要有一个error就直接返回2,无需继续遍历
                return 2;
            } 
            // 其次检查warning状态
            else if (dataMode === 'success' && dataPure === 'no') {
                // 只要有一个warning,就把状态设为1(因为优先级高于success)
                highestValue = 1;
                console.log('检测到warning,更新状态为1');
            } 
            // 最后检查success状态(只有当前还没更高优先级状态时才设置)
            else if (dataMode === 'success' && dataPure === 'yes' && highestValue < 0) {
                highestValue = 0;
                console.log('检测到success,更新状态为0');
            }
        }
    }

    return highestValue;
}

关键修改说明

  • 初始化errorCount为0,并且简化了error的处理逻辑:只要找到一个data-mode="error"的行,直接返回2,不需要计数(因为只要有一个error就符合条件)。
  • 调整了判断顺序:先查error,再查warning,最后查success,确保高优先级状态不会被低优先级覆盖。
  • 简化了warning的处理:只要存在符合条件的行,就把highestValue设为1,不用再判断当前值大小(因为1的优先级高于0)。

你可以测试这几种场景验证结果:

  • 所有行都是data-mode="success"且data-pure="yes":返回0
  • 存在至少一行data-mode="success"且data-pure="no":返回1
  • 存在至少一行data-mode="error":返回2

备注:内容来源于stack exchange,提问作者Notion

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 11:22:59