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

JavaScript宾果游戏如何禁止点击切换免费格子freespace的高亮状态

解决方案

只需要修改2处代码即可实现需求,无需额外手动调整样式:

1. 给免费格子添加专属标识与默认高亮

在动态生成免费格子的单元格时,直接追加专属类和默认高亮类,保证初始状态就是高亮的:
找到isFreeSpace判断分支内的生成代码,修改为:

} else if (isFreeSpace(words.length, index)) {
    // 加free-space类做标识,同时默认带highlight类保持初始高亮
    tr+= '<td class="free-space highlight"><img src="images/paw.svg"></td>';
}

2. 调整点击事件逻辑,跳过免费格子的状态切换

因为你用了事件委托绑定点击事件,只需要在触发时判断是否点击了免费格子,是的话直接终止处理即可,同时兼容点击到格子内图片的场景:
将原有的点击事件逻辑修改为:

table.onclick = function(event) {
    // 向上查找最近的td节点,兼容点击到单元格内图片的情况
    const targetTd = event.target.closest('td');
    // 未找到有效单元格 或 是免费格子,直接不处理
    if (!targetTd || targetTd.classList.contains('free-space')) return;
    highlight(targetTd);
};

function highlight(td) {
    td.classList.toggle('highlight');
}

额外注意事项

你现有的isEndOfRow函数存在运算优先级错误,会导致行拆分逻辑异常,建议修改为:

function isEndOfRow(rowSize, index) {
    // 原来的index + 1 / rowSize 会先算除法再加index,逻辑错误
    return Number.isInteger((index + 1) / rowSize);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 18:57:01