如何在 case 块中从 运行 停止 setInterval
How do I stop setInterval from running in a case block
var text = //string from user input
switch (text) {
case 'yes':
var myint = setInterval(async () => {
//do something
}, 1000);
break;
case 'stop':
clearInterval(myint)
break;
case 'no':
console.log('ok')
break;
default:
console.log('hi');
}
此代码接受用户输入,将其转换为字符串并将其传递到 switch 语句中
如上面的代码片段所示,当 text = 'yes'
时,间隔开始。但是当用户输入 no 即 text = 'no'
到 运行 清除间隔时,间隔不会停止。使用或不使用 setInterval
我该怎么做?
您必须在 case 范围之前声明 var。
var text = "userinput";
// declare globally
var myint;
switch (text) {
case 'yes':
var myint = setInterval(async () => {
//do something
}, 1000);
break;
case 'stop':
clearInterval(myint)
break;
case 'no':
console.log('ok')
break;
default:
console.log('hi');
}
你的意思是这样?
var myint;
document.querySelector("select").onchange = function() {
var text = this.value, i = 0;
switch(text) {
case 'yes':
myint = setInterval(async () => {
console.log(++i);
}, 1000);
break;
case 'no':
clearInterval(myint);
break;
}
}
<select>
<option value="no">No</option>
<option value="yes">Yes</option>
</select>
var text = //string from user input
switch (text) {
case 'yes':
var myint = setInterval(async () => {
//do something
}, 1000);
break;
case 'stop':
clearInterval(myint)
break;
case 'no':
console.log('ok')
break;
default:
console.log('hi');
}
此代码接受用户输入,将其转换为字符串并将其传递到 switch 语句中
如上面的代码片段所示,当 text = 'yes'
时,间隔开始。但是当用户输入 no 即 text = 'no'
到 运行 清除间隔时,间隔不会停止。使用或不使用 setInterval
我该怎么做?
您必须在 case 范围之前声明 var。
var text = "userinput";
// declare globally
var myint;
switch (text) {
case 'yes':
var myint = setInterval(async () => {
//do something
}, 1000);
break;
case 'stop':
clearInterval(myint)
break;
case 'no':
console.log('ok')
break;
default:
console.log('hi');
}
你的意思是这样?
var myint;
document.querySelector("select").onchange = function() {
var text = this.value, i = 0;
switch(text) {
case 'yes':
myint = setInterval(async () => {
console.log(++i);
}, 1000);
break;
case 'no':
clearInterval(myint);
break;
}
}
<select>
<option value="no">No</option>
<option value="yes">Yes</option>
</select>