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

通过JavaScript根据值修改徽章颜色(遇错误徽章问题)

问题原因

你的<select>下拉框中选项的value属性是字符串类型的"false"和"true",但render函数里的switch语句用的是布尔类型的false、true做判断。由于JavaScript中字符串和布尔值类型不相等("false" !== false、"true" !== true),导致所有情况都匹配不到case分支,最终走default输出错误徽章。

解决方案

方案一:修改case值为字符串类型

直接将switch中的case条件改为对应字符串,和下拉框的value保持一致:

render: function (data, type, row, meta) {
    switch (data) {
        case "false":
            return '<span class="badge bg-success">Un Locked</span>';
        case "true":
            return '<span class="badge rounded-pill bg-secondary">Locked</span>';
        default:
            return '<span class="badge badge-danger badge-pill">Error!</span>';
    }
}

方案二:将data转换为布尔值后判断

先把获取到的字符串值转换成布尔类型,再进行判断:

render: function (data, type, row, meta) {
    // 将字符串转为布尔值:"true"转为true,其他转为false
    const isLocked = data === "true";
    
    if (isLocked) {
        return '<span class="badge rounded-pill bg-secondary">Locked</span>';
    } else if (data === "false") {
        return '<span class="badge bg-success">Un Locked</span>';
    } else {
        return '<span class="badge badge-danger badge-pill">Error!</span>';
    }
}

或者用switch处理转换后的布尔值:

render: function (data, type, row, meta) {
    const boolData = data === "true";
    switch (boolData) {
        case false:
            return '<span class="badge bg-success">Un Locked</span>';
        case true:
            return '<span class="badge rounded-pill bg-secondary">Locked</span>';
        default:
            return '<span class="badge badge-danger badge-pill">Error!</span>';
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 09:05:11