Я сделал интервал, связанный с кнопкой, которая запускается только тогда, когда у вас есть определенная сумма денег и лимонад. Затем я создал оператор if, который делает так, чтобы, когда у вас кончился лимонад, интервал останавливался. Я использовал clearInterval () и по какой-то причине интервал не останавливается, а количество лимонада уходит в минус. Очевидно, что вы не можете иметь отрицательное количество чего-либо!
Я посмотрел на все другие вопросы с похожими проблемами, но они не ответили на мой вопрос. Все они имеют разные переменные, и было трудно найти ответ, относящийся к моему коду.
Вот мой код:
let autoBtnTwo = document.getElementById("autoBtnTwo");
let lemonade = 0;
let btnTwo = document.getElementById("btnTwo")
function btnTwoCost() {
wallet.removeCash(20);
update();
document.getElementById("lemonade").innerHTML = lemonade += 30
}
function double() {
if (wallet.getCash() >= 50) {
wallet.addCash(2)
update();
document.getElementById("lemonade").innerHTML = lemonade -= 1;
}
}
function autoLemonade() {
if (wallet.getCash() >= 3000) {
wallet.removeCash(3000);
var myint = setInterval(double, 1000);
autoBtnTwo.disabled = false;
update();
}
if (wallet.getCash() <= 2999) {
autoBtnTwo.disabled = true;
}
if (lemonade <= 0) {
autoBtnTwo.disabled = true;
btnTwo.disabled = true;
}
}
function stopInterval() {
var myint = setInterval(double, 1000);
if (lemonade <= 0) {
clearInterval(myint);
stopInterval();
}
}
function thousand() {
wallet.addCash(1000)
update();
if (wallet.getCash() >= 3000) {
autoBtnTwo.disabled = false;
}
}
function Wallet() {
return {
addCash: function(val) {
number += val;
},
getCash: function() {
return number;
},
removeCash: function(val) {
number -= val;
}
}
}
var number = 0;
const wallet = new Wallet();
var SUFFIXES = 'KMBTqQsSOND';
function update() {
document.getElementById('number').textContent = getSuffixedNumber(wallet.getCash());
}
function getSuffixedNumber(num) {
var power = Math.floor(Math.log10(num));
var index = Math.floor(power / 3)
num = num / Math.pow(10, (index * 3)); // first 3 digits of the number
return num.toFixed(1) + (SUFFIXES[index - 1] || ''); // default to no suffix if it gets an out of bounds index
}
<button onclick="autoLemonade()" class="chocolate-bar-auto" id="autoBtnTwo" disabled>
Hire worker: <br> -$3000<br> Sells Lemonade
</button>
<button onclick="thousand()">to get to $3000 for testing </button>
<button onclick="btnTwoCost()"> buy lemonade -$20</button>
<button onclick="double()">sell lemonade </button>
<div class="cash-div">
Cash: <div id="number">0</div>
</div>
<div class="lemonade-div">
Lemonade: <div id="lemonade">0</div>
</div>
Извините, если эта версия не работает. Весь код, который я использовал для предотвращения сбоев, делает код длиннее, чего уже достаточно. 4 раза нажмите кнопку $ 3000, затем кнопку «Купить лимонад», а затем кнопку «Найм работника», и вы увидите, что произойдет, когда она достигнет 0.
Интервал должен прекратить добавлять деньги и прекратить уменьшать количество лимонада, когда лимонад достигает 0, но вместо этого он продолжает идти в минус.