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

表格处理fight_declaration数据生成tr/td遇阻,求技术解决方案

修正方案:实现count>1生成独立行、count=1合并为同一行

我明白你遇到的问题了——当前代码处理count=1的条目时只生成了孤立的<td>标签,没有用<tr>包裹,这会让浏览器自动补全错误的表格结构,导致多余的行。同时你需要把所有count=1的条目合并到同一个<tr>的多个<td>中,而不是零散处理。

以下是修正后的代码:

var json = '[ {"fight_declaration": 1, "count": 2 }, {"fight_declaration": 3, "count": 1 }, {"fight_declaration": 2, "count": 1 } ]';
var data = '';
// 新增变量收集所有count=1的td内容
var singleCountTDs = '';

$.each(JSON.parse(json),function(key,val) {
    // 封装生成td的逻辑,避免重复代码
    function generateTD(type) {
        switch(type) {
            case 1: return '<td><span class="red-dot"></span></td>';
            case 2: return '<td><span class="blue-dot"></span></td>';
            case 3: return '<td><span class="green-dot"></span></td>';
            case 4: return '<td><span class="yellow-dot"></span></td>';
            default: return '';
        }
    }

    if(val.count > 1) {
        // count>1时,每个数量生成独立的tr
        for(let i = 0; i < val.count; i++) {
            data += '<tr>' + generateTD(val.fight_declaration) + '</tr>';
        }
    } else {
        // count=1时,先收集td,不直接拼接tr
        singleCountTDs += generateTD(val.fight_declaration);
    }
});

// 如果有count=1的条目,把它们的td包裹在同一个tr里
if(singleCountTDs) {
    data += '<tr>' + singleCountTDs + '</tr>';
}

$(".trend-table").find("tbody").html(data);

关键改动说明:

  • 提取了generateTD函数,避免重复的if-else判断,让代码更简洁易维护
  • 新增singleCountTDs变量专门收集所有count=1的条目对应的<td>内容
  • 遍历完成后,统一将收集到的<td>用一个<tr>包裹,再拼接到最终的HTML字符串中
  • 保留了count>1时生成独立<tr>的逻辑,这部分是符合需求的

这样处理后,就能实现:

  • 所有count>1的条目,每个计数生成单独的表格行
  • 所有count=1的条目,全部合并到同一个表格行的不同单元格中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 14:22:33