在动态计数器中,我希望能够停止并恢复它。我设法做到了,但“取消”按钮只在第一次工作,一旦我重新启动计数器,我不能再停止它。
我也想知道如何改进“简历”按钮代码,使我不必重复行。
这是我的密码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>setInterval</title>
</head>
<body>
<h1 id="timer">Han pasado 0 segundos</h1>
<button id="cancel-button">Cancel</button>
<button id="resume-button">Resume</button>
<script>
const timer = document.getElementById('timer');
let counter = 0;
const interval = setInterval(() => {
counter++;
if (counter == 1){
timer.textContent = `ha pasado ${counter} segundo`;
}else{
timer.textContent = `han pasado ${counter} segundos`;
}
}, 1000)
const cancelButton = document.getElementById('cancel-button');
cancelButton.addEventListener('click', () => {
clearInterval(interval)
})
const resumeButton = document.getElementById('resume-button');
resumeButton.addEventListener('click', () => {
setInterval(() => {
counter++;
if (counter == 1){
timer.textContent = `ha pasado ${counter} segundo`;
}else{
timer.textContent = `han pasado ${counter} segundos`;
}
}, 1000)
})
</script>
</body>
</html>非常感谢!
发布于 2018-04-07 15:36:12
解决这一问题的一种方法是在第二次调用setInterval时重新释放您的区间变量,也不要使用const,因为它只读取
const timer = document.getElementById('timer');
let counter = 0;
let interval = setInterval(() => {
counter++;
if (counter == 1){
timer.textContent = `ha pasado ${counter} segundo`;
}else{
timer.textContent = `han pasado ${counter} segundos`;
}
}, 1000)
const cancelButton = document.getElementById('cancel-button');
cancelButton.addEventListener('click', () => {
for(var i = 0; i<=100;i++){
clearInterval(i)
}
})
const resumeButton = document.getElementById('resume-button');
resumeButton.addEventListener('click', () => {
interval = setInterval(() => {
counter++;
if (counter == 1){
timer.textContent = `ha pasado ${counter} segundo`;
}else{
timer.textContent = `han pasado ${counter} segundos`;
}
}, 1000)
})<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>setInterval</title>
</head>
<body>
<h1 id="timer">Han pasado 0 segundos</h1>
<button id="cancel-button">Cancel</button>
<button id="resume-button">Resume</button>
</body>
</html>
发布于 2018-04-07 15:38:35
将const替换为let (timer),
let interval = setInterval(() => {并重新分配您的let (简历)
interval = setInterval(() => {发布于 2018-04-07 15:39:12
当您恢复计数器时,您需要将setInterval的结果分配给您的“整数”变量,因为您正在使用它来清除间隔。
const resumeButton = document.getElementById('resume-button');
resumeButton.addEventListener('click', () => {
interval = setInterval(() => {
counter++;
if (counter == 1){
timer.textContent = `ha pasado ${counter} segundo`;
}else{
timer.textContent = `han pasado ${counter} segundos`;
}
}, 1000)
})和改变间隔,让它代替康斯特
https://stackoverflow.com/questions/49708924
复制相似问题