Остановить таймер на нуле - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь остановить обратный отсчет до нуля, но он сбрасывается, а не останавливается.

Я добавил условный оператор в конце функции runTimer, но ничего не происходит. Это просто сбрасывает.

Я ухожу с упражнения, где оно отсчитывает. Я немного его модифицирую, и у меня начинается обратный отсчет.

function runTimer() {
    let currentTime = leadingZero(timer[1]) + ":" + leadingZero(timer[2]);
    theTimer.innerHTML = currentTime;
    timer[3]--;

    timer[0] = Math.floor((timer[3]/100)/60); //minutes
    timer[1] = Math.floor((timer[3]/100) - (timer[0] * 60)); //seconds
    timer[2] = Math.floor(timer[3] - (timer[1] * 100) - (timer[0] * 6000)); //hundredths

    if (currentTime = 0) {
      clearInterval(interval);
    }

}

Я ожидал, что он остановится на нуле, но он просто сбрасывается до 59:00 ... и я хочу, чтобы он остановился в 00:00.

Ответы [ 2 ]

2 голосов
/ 23 апреля 2019

Проблема в этой части:

if (currentTime = 0)

Поскольку вы проверяете, равно ли значение 0, вы не хотите присваивать значение 0, вместо этого вы хотите сравнить currentTime с 0. Это делается с помощью оператора ===. Итак, подведем итог:

= означает присвоить значение переменной. (слева - переменная, а справа - присвоение)

== или === - для сравнения двух значений. ( Разница между == и === в JavaScript )

Ваша строка должна быть:

if (currentTime == 0)

Надеюсь, это помогло. :)

1 голос
/ 23 апреля 2019

Два очка.

1) Как уже упоминалось, ваше условие if не будет работать, потому что вы используете «=» (один знак равенства).Один знак равенства в JavaScript присваивает значения, а не сравнивает значения.Однако вы хотите сравнить значения и должны использовать двойное или тройное равенство.

2) Даже если вы измените это значение, currentTime, вероятно, никогда не станет равным нулю, так как ранее вы присвоили строку для currentTime,Таким образом, даже если currentTime равен "00:00", строка не будет иметь значение 0 (см. Изображение)

enter image description here

Полагаю, вы больше хотите сделать что-то вродеэто:

if (timer[2] === 0 && timer [1] === 0 && timer[0] === 0) {
    clearInterval(interval);
}

Или, скорее всего, этого будет достаточно:

if (timer[3] <= 0) {
    clearInterval(interval);
}
...