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

+1按钮小游戏异常:金额6-9美元时2倍购买按钮误启用问题

问题原因

你出现这个bug的核心原因是执行了字符串的字典序比较,而非数字大小比较:

  • 代码里document.getElementById("money").innerHTML取到的是字符串类型的值,你把它和字符串"50"做比较时,JS会按字符的Unicode编码逐位比对
  • 当金额是6-9时,取到的字符串是"6"~"9",第一位字符的编码比"50"的第一位"5"大,所以"6" >= "50"的判断结果会返回true,按钮就提前启用了

修复方案

方案1(更推荐):直接使用已定义的数字变量money做判断

你本身已经维护了数字类型的全局变量money,完全不需要读取DOM的值做判断,还可以删掉无用的高频定时器,把判断逻辑放到addOne函数里执行,性能更好:

var money = 0;
// 按钮状态更新逻辑复用
function updateButtonStatus() {
  document.getElementById("timesTwoButtonShop").disabled = money < 50;
}

function addOne() {
    money++;
    document.getElementById("money").innerHTML = money;
    // 每次金额更新后同步更新按钮状态
    updateButtonStatus();
}

// 页面初始化时执行一次,保证初始状态正确
updateButtonStatus();
// 可删除原来的setInterval轮询逻辑

方案2:如果需要读取DOM值做判断,先转成数字类型再比较

如果你一定要保留定时器逻辑,要把取到的DOM值转成数字再做比较:

window.setInterval(function(){
  // 把字符串转成数字后再做大小比较
  const currentMoney = Number(document.getElementById("money").innerHTML);
  document.getElementById("timesTwoButtonShop").disabled = currentMoney < 50;
}, 1);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:15:03