如何实现当iloscZycia(HP)为0时停止iloscPieniedzy计数?
实现HP为0时停止金钱计数的解决方案
需求明确:当iloscZycia(HP)的值为0时,禁止对iloscPieniedzy(金钱)进行增减操作。
你之前尝试的代码有两个关键问题:
- 误用赋值符号
=而非比较符号===,这会直接把sumaZycia设为0,而非判断它的当前值 - 就算逻辑正确,那段代码也只是一次性将金钱设为0,没有阻止后续的点击操作
正确做法是在每次点击金钱增减按钮时,先检查当前HP是否为0,如果是就直接终止函数,不执行任何金钱操作。修改后的完整代码如下:
let iloscZycia = 20; const sumaZycia = document.getElementById("suma-zycia"); const dodajZycie = document.getElementById('dodaj-zycie'); const odejmijZycie = document.getElementById('odejmij-zycie'); dodajZycie.addEventListener("click", function() { iloscZycia++; sumaZycia.textContent = iloscZycia; }); odejmijZycie.addEventListener("click", function() { iloscZycia = iloscZycia - 5; if (iloscZycia <= 0) { iloscZycia = 0 }; sumaZycia.textContent = iloscZycia; }); let iloscPieniedzy = 0; const sumaPieniedzy = document.getElementById("suma-pieniedzy"); const dodajPieniadze = document.getElementById('dodaj-pieniadze'); const odejmijPieniadze = document.getElementById('odejmij-pieniadze'); dodajPieniadze.addEventListener("click", function() { // HP为0时直接返回,不执行金钱增加操作 if (iloscZycia === 0) return; iloscPieniedzy = iloscPieniedzy + 10; sumaPieniedzy.textContent = iloscPieniedzy; }); odejmijPieniadze.addEventListener("click", function() { // HP为0时直接返回,不执行金钱减少操作 if (iloscZycia === 0) return; iloscPieniedzy = iloscPieniedzy - 1; if (iloscPieniedzy <= 0) { iloscPieniedzy = 0 }; sumaPieniedzy.textContent = iloscPieniedzy; });
修改说明:
- 在
dodajPieniadze和odejmijPieniadze的点击事件开头,新增判断逻辑:只要HP为0,就直接结束函数,跳过后续的金钱增减操作 - 直接判断变量
iloscZycia而非DOM元素sumaZycia,变量是数据的直接存储,比读取DOM内容更可靠
内容的提问来源于stack exchange,提问作者Sednavin
相关产品推荐
相关产品推荐

