HTML5点击器游戏升级按钮价格显示异常问题求助
点击器游戏升级按钮价格显示问题修复
你的核心问题是代码执行顺序搞反了——现在你先涨价格再扣钱,导致按钮显示的是已经涨完的“上一次操作后的价格”,而用户需要看到的是“下一次要花的钱”。另外还有个隐藏bug:你在升级按钮的点击事件里嵌套绑定了点击事件,会导致每次点升级,就多绑一次counterPlusElem的点击逻辑,点它的时候会触发多次加1操作。
修正步骤:
- 调整扣钱与涨价的顺序:先扣除当前升级的成本,再计算下一次升级的价格,这样按钮显示的就是下一次要花的钱
- 把
counterPlusElem的事件绑定移到外面:只绑定一次,避免重复触发
修正后的完整代码:
let buttonUpgradeElem = document.querySelector(".upGradeA"); let counterPlusElem = document.querySelector(".counterPlus"); // 替换为你的实际元素选择器 let count = 0; // 根据你的游戏初始值调整 let cost = 20; // 初始显示第一次升级的价格 updateButtonDisplay(); // 点击加1事件,只绑定一次 counterPlusElem.addEventListener("click", () => { count += 1; updateDisplay(); }); // 升级按钮点击逻辑 buttonUpgradeElem.addEventListener("click", () => { // 可选:先检查余额是否足够 if (count < cost) { alert("余额不足,无法升级"); return; } // 1. 扣除当前升级的成本 count -= cost; // 2. 更新余额显示 updateDisplay(); // 3. 计算下一次升级的价格 cost = cost * 1.05; // 4. 更新按钮显示(现在显示的是下一次的价格) updateButtonDisplay(); }); function updateButtonDisplay() { // 保留两位小数,避免数字过长 buttonUpgradeElem.innerHTML = "+ 1 per click Cost : $" + cost.toFixed(2); } function updateDisplay() { // 替换为你更新count显示的实际逻辑 // document.querySelector(".count-display").textContent = count; }
关键说明:
- 初始调用
updateButtonDisplay()时,显示的是第一次升级需要的20元,符合用户预期 - 每次点击升级,先花掉当前的
cost,再涨价,按钮立刻更新为下一次的价格 - 把
counterPlusElem的事件绑定移到升级事件外面,确保只绑定一次,不会出现点一次加多次的情况 - 用
toFixed(2)格式化价格,避免出现过多小数位,更符合游戏的显示习惯
内容的提问来源于stack exchange,提问作者Jimmy
相关产品推荐
相关产品推荐

