// global setinterval timer
let countdownEnded = false;
let intervalSeconds = false;
let counter = -1; // reset must be counter = -1
// init
(() => {
updateDisplay(1800, 0);
document.getElementById('millis').innerHTML = "00";
//element.addEventListener("click", function(){ myFunction(p1, p2); });
})();
function start(time = 1800) {
let startTime = Date.now();
let inputTime =
counter === -1
? document.getElementById('minutesInputField').value * 60 || time
: counter
intervalSeconds = setInterval(() => {
let currentTime = Date.now() - startTime;
if (inputTime < 1) {
stop();
} else {
counter = inputTime - updateDisplay(inputTime, currentTime);
updateMillis();
}
}, 1000);
}
function pause() {
clearInterval(intervalSeconds);
interval = undefined;
}
function reset() {
}
function stop() {
let countDivElement = document.getElementById("countdown");
countDivElement.innerHTML = 'countdown done';
countdownEnded = true;
clearInterval(intervalSeconds);
}
function updateDisplay(seconds, currentTime) {
let timeIncrement = Math.floor(currentTime / 1000);
updateTime(seconds - timeIncrement);
return timeIncrement;
}
/**
* @method - updatesecondsond
* @summary - This updates the timer every seconds
*/
function updateTime(seconds) {
let countDivElement = document.getElementById("timer");
let minutes = Math.floor(seconds / 60);
let remainingSeconds = seconds % 60;
if (remainingSeconds < 10) {
remainingSeconds = '0' + remainingSeconds;
}
if (minutes < 10) {
minutes = '0' + minutes;
}
if (seconds > 0) {
seconds = seconds - 1;
} else {
stop();
}
countDivElement.innerHTML = minutes + ":" + remainingSeconds + ":";
};
function updateMillis() {
let countMillsElement = document.getElementById('millis');
let counterMillis = 99;
let millis = 0;
let intervalMillis = setInterval(() => {
if (counterMillis < 0) {
clearInterval(intervalMillis);
counterMillis = 99;
} else {
millis = counterMillis < 10 ? counterMillis + '0' : counterMillis;
};
countMillsElement.innerHTML = millis;
counterMillis--;
}, 10);
if (countdownEnded) {
stop();
clearInterval(intervalMillis);
}
};
<div class="clock" id="model3">
<div id="countdown">
<span id="timer"></span><span id="millis"></span>
</div>
</div>
<input type="number" id="minutesInputField" placeholder="minutes" />
<div class="buttons">
<button class="btn start" onclick="start()">Start</button>
<button class="btn pause" onclick="pause()">Pause</button>
<button class="btn reset" onclick="reset()">Reset</button>
</div>
我使用开始,暂停和重置功能进行倒计时。启动功能起作用并暂停。当我按下暂停然后开始时,它会继续,所以非常完美。但是,如果我想按重置键,则需要将其重置为输入字段中的分钟数。如果那里没有任何东西,因为它默认为30分钟,那么在您按下Reset按钮时,它需要30分钟。那是我的问题。是否有人可以帮助我?谢谢!
<html>
<div class="clock" id="model3">
<div id="countdown">
<span id="timer"></span><span id="millis">
</span>
</div>
</div>
<input type="number" id="minutesInputField" placeholder="minutes" />
<div class="buttons">
<button class="btn start" onclick="start()">Start</button>
<button class="btn pause" onclick="pause()">Pause</button>
<button class="btn reset" onclick="reset()">Reset</button>
</div>
</html>
// global setinterval timer
let countdownEnded = false;
let intervalSeconds = false;
let counter = -1; // reset must be counter = -1
// init
(() => {
updateDisplay(1800, 0);
document.getElementById('millis').innerHTML = "00";
//element.addEventListener("click", function(){ myFunction(p1, p2); });
})();
function start(time = 1800) {
let startTime = Date.now();
let inputTime =
counter === -1
? document.getElementById('minutesInputField').value * 60 || time
: counter
intervalSeconds = setInterval(() => {
let currentTime = Date.now() - startTime;
if (inputTime < 1) {
stop();
} else {
counter = inputTime - updateDisplay(inputTime, currentTime);
updateMillis();
}
}, 1000);
}
function pause() {
clearInterval(intervalSeconds);
interval = undefined;
}
function reset() {
clearInterval(intervalSeconds);
document.getElementById('minutesInputField').innerHTML;
}
function stop() {
let countDivElement = document.getElementById("countdown");
countDivElement.innerHTML = 'countdown done';
countdownEnded = true;
clearInterval(intervalSeconds);
}
function updateDisplay(seconds, currentTime) {
let timeIncrement = Math.floor(currentTime / 1000);
updateTime(seconds - timeIncrement);
return timeIncrement;
}
/**
* @method - updatesecondsond
* @summary - This updates the timer every seconds
*/
function updateTime(seconds) {
let countDivElement = document.getElementById("timer");
let minutes = Math.floor(seconds / 60);
let remainingSeconds = seconds % 60;
if (remainingSeconds < 10) {
remainingSeconds = '0' + remainingSeconds;
}
if (minutes < 10) {
minutes = '0' + minutes;
}
if (seconds > 0) {
seconds = seconds - 1;
} else {
stop();
}
countDivElement.innerHTML = minutes + ":" + remainingSeconds + ":";
};
function updateMillis() {
let countMillsElement = document.getElementById('millis');
let counterMillis = 99;
let millis = 0;
let intervalMillis = setInterval(() => {
if (counterMillis < 0) {
clearInterval(intervalMillis);
counterMillis = 99;
} else {
millis = counterMillis < 10 ? counterMillis + '0' : counterMillis;
};
countMillsElement.innerHTML = millis;
counterMillis--;
}, 10);
if (countdownEnded) {
stop();
clearInterval(intervalMillis);
}
};
您的重置功能不完整,它必须包含以下内容:
document.getElementById('minutesInputField').innerHTML = '30:00:00';
尝试一下:
function reset() {
clearInterval(intervalSeconds);
updateDisplay(document.getElementById('minutesInputField').value*60,0);
}
或此(具有默认值):
function reset() {
defaultMinute = 30;
clearInterval(intervalSeconds);
updateDisplay((document.getElementById('minutesInputField').value || defaultMinute)*60,0);
}
// global setinterval timer
let countdownEnded = false;
let intervalSeconds = false;
let counter = -1; // reset must be counter = -1
// init
(() => {
updateDisplay(1800, 0);
document.getElementById('millis').innerHTML = "00";
//element.addEventListener("click", function(){ myFunction(p1, p2); });
})();
function start(time = 1800) {
let startTime = Date.now();
let inputTime =
counter === -1
? document.getElementById('minutesInputField').value * 60 || time
: counter
intervalSeconds = setInterval(() => {
let currentTime = Date.now() - startTime;
if (inputTime < 1) {
stop();
} else {
counter = inputTime - updateDisplay(inputTime, currentTime);
updateMillis();
}
}, 1000);
}
function pause() {
clearInterval(intervalSeconds);
interval = undefined;
}
function reset() {
defaultMinute = 30;
clearInterval(intervalSeconds);
updateDisplay((document.getElementById('minutesInputField').value || defaultMinute)*60,0);
}
function stop() {
let countDivElement = document.getElementById("countdown");
countDivElement.innerHTML = 'countdown done';
countdownEnded = true;
clearInterval(intervalSeconds);
}
function updateDisplay(seconds, currentTime) {
let timeIncrement = Math.floor(currentTime / 1000);
updateTime(seconds - timeIncrement);
return timeIncrement;
}
/**
* @method - updatesecondsond
* @summary - This updates the timer every seconds
*/
function updateTime(seconds) {
let countDivElement = document.getElementById("timer");
let minutes = Math.floor(seconds / 60);
let remainingSeconds = seconds % 60;
if (remainingSeconds < 10) {
remainingSeconds = '0' + remainingSeconds;
}
if (minutes < 10) {
minutes = '0' + minutes;
}
if (seconds > 0) {
seconds = seconds - 1;
} else {
stop();
}
countDivElement.innerHTML = minutes + ":" + remainingSeconds + ":";
};
function updateMillis() {
let countMillsElement = document.getElementById('millis');
let counterMillis = 99;
let millis = 0;
let intervalMillis = setInterval(() => {
if (counterMillis < 0) {
clearInterval(intervalMillis);
counterMillis = 99;
} else {
millis = counterMillis < 10 ? counterMillis + '0' : counterMillis;
};
countMillsElement.innerHTML = millis;
counterMillis--;
}, 10);
if (countdownEnded) {
stop();
clearInterval(intervalMillis);
}
};
<html>
<div class="clock" id="model3">
<div id="countdown">
<span id="timer"></span><span id="millis">
</span>
</div>
</div>
<input type="number" id="minutesInputField" placeholder="minutes" />
<div class="buttons">
<button class="btn start" onclick="start()">Start</button>
<button class="btn pause" onclick="pause()">Pause</button>
<button class="btn reset" onclick="reset()">Reset</button>
</div>
</html>