游戏生命值耗尽时重置按钮未显示的问题排查
问题排查与修复方案
你的代码里有三个核心问题导致重置按钮无法正常显示,逐一解决就能搞定:
1. 条件判断语法错误
原代码里的match逻辑括号位置完全错误,导致判断逻辑失效。而且用match不如直接用includes更直观(因为src会返回完整URL,includes能直接检测是否包含目标路径)。
错误写法:
if (foodHeart1.src.match("images/emptyheart.png" && playHeart1.src.match("images/emptyheart.png")))
正确写法:
if (foodHeart1.src.includes("images/emptyheart.png") && playHeart1.src.includes("images/emptyheart.png"))
2. CSS display属性取值错误
display: "visible"是无效的CSS值,visible是visibility属性的合法取值,而display的常用显示值是block、inline、inline-block等,根据你的布局选一个合适的就行。
错误写法:
resetButton.style.display = "visible";
正确写法(示例用block):
resetButton.style.display = "block";
3. 未在爱心状态变化时重新调用检测函数
你只在页面加载时调用了一次hideReset(),但当爱心从满变空的时候,没有再次触发这个函数去检查状态,所以按钮不会自动显示。
需要在每次爱心图片更新后,手动调用hideReset(),比如你修改foodHeart1.src或playHeart1.src的代码后面,加上hideReset();。
完整修正后的代码示例
const resetButton = document.getElementById('reset'); function reset() { location.reload(); } resetButton.addEventListener('click', reset); // Hide reset button until no hearts left function hideReset() { // 修正条件判断逻辑,用includes替代match const allHeartsEmpty = foodHeart1.src.includes("images/emptyheart.png") && playHeart1.src.includes("images/emptyheart.png"); // 修正display属性值 resetButton.style.display = allHeartsEmpty ? "block" : "none"; } // 页面加载时初始化状态 hideReset(); // 示例:每次爱心状态更新后调用(需要替换成你实际修改爱心的代码位置) // 比如当扣减爱心时: // foodHeart1.src = "images/emptyheart.png"; // hideReset(); // 调用检测函数更新按钮状态
内容的提问来源于stack exchange,提问作者breanne1209
相关产品推荐
相关产品推荐

