Javascript 如何暂停setTimeout函数

Javascript 如何暂停setTimeout函数,javascript,settimeout,Javascript,Settimeout,我有这个代码,可以用一个按钮启动一个setTimeout函数,然后用另一个按钮停止它,但是如果我停止并启动它,它会重新开始,有没有办法获得一个暂停/继续按钮 Javascript代码: var timeout1, timeout2, timeout3; function timedText() { timeout1 = setTimeout(desertAK, 1000) timeout2 = setTimeout(fourAlarmShotgun, 5000) t

我有这个代码,可以用一个按钮启动一个
setTimeout
函数,然后用另一个按钮停止它,但是如果我停止并启动它,它会重新开始,有没有办法获得一个暂停/继续按钮

Javascript代码:

var timeout1, timeout2, timeout3;

function timedText() {
    timeout1 = setTimeout(desertAK, 1000) 
    timeout2 = setTimeout(fourAlarmShotgun, 5000) 
    timeout3 = setTimeout(frostbiteAR, 9000)
}

function stopTimeout() {
    clearTimeout(timeout1);
    clearTimeout(timeout2);
    clearTimeout(timeout3);
 }

function desertAK() {
    document.getElementById("leser").innerHTML = '<iframe src="https://opskins.com/?loc=shop_search&sort=lh&app=433850_1&search_item=%22Desert%20Warfare%20AK-47%22"></iframe>';
 }
function fourAlarmShotgun() {
    document.getElementById("leser2").innerHTML = '<iframe src="https://opskins.com/?loc=shop_search&sort=lh&app=433850_1&search_item=%22Four%20Alarm%2012GA%20Pump%20Shotgun%22"></iframe>';
}
function frostbiteAR() {
    document.getElementById("leser").innerHTML = '<iframe src="https://opskins.com/?loc=shop_search&sort=lh&app=433850_1&search_item=%22Frostbite%20AR-15%22"></iframe>';
}
var timeout1、timeout2、timeout3;
函数timedText(){
timeout1=setTimeout(沙漠,1000)
timeout2=设置超时(四报警霰弹枪,5000)
timeout3=setTimeout(霜冻,9000)
}
函数stopTimeout(){
清除超时(超时1);
清除超时(超时2);
清除超时(超时3);
}
函数desertAK(){
document.getElementById(“leser”).innerHTML='';
}
函数fourAlarmShotgun(){
document.getElementById(“leser2”).innerHTML='';
}
函数frostbiteAR(){
document.getElementById(“leser”).innerHTML='';
}
HTML按钮:

  <button onclick="timedText()">Start</button>

  <button onclick="stopTimeout()">Stop</button>
开始
停止
var Timer=(函数(){
var isExeced=[1,1,1];
变量timeout1、timeout2、timeout3;
var startTime,costTime=0;
var finished=false;
var状态=0;
功能重置(){
成本时间=0;
状态=0;
完成=错误;
isExeced=[1,1,1];
}
函数desertAK(){
document.getElementById(“leser”).innerHTML='';
}
功能四报警霰弹枪(){
document.getElementById(“leser2”).innerHTML='';
}
功能性冻疮(){
document.getElementById(“leser”).innerHTML='';
}
函数timedText(){
如果(完成){
返回简历();
}
如果(状态===1){
返回;
}否则{
状态=1;
}
开始时间=+新日期();
如果(已执行[0]){
timeout1=setTimeout(函数(){
isExeced[0]=0;
沙漠();
},1000-成本时间);
}
如果(已执行[1]){
timeout2=设置超时(函数(){
isExeced[1]=0;
四杆霰弹枪();
},5000—成本时间);
}
如果(已执行[2]){
timeout3=设置超时(函数(){
isExeced[2]=0;
完成=正确;
状态=0;
冻疮();
},9000—成本时间);
}
}
函数stopTimeout(){
costTime+=+新日期()-开始时间;
状态=0;
清除超时(超时1);
清除超时(超时2);
清除超时(超时3);
}
功能恢复(){
停止超时();
重置();
timedText();
}
返回{
开始:timedText,
停止:停止超时,
简历:简历
}

})();添加保存上次执行操作的断点变量状态

var timeout1, timeout2, timeout3;
var status = 0;

function timedText() {
    if(status + 1 == 1) {
        timeout1 = setTimeout(desertAK, 1000) 
        timeout2 = setTimeout(fourAlarmShotgun, 5000) 
        timeout3 = setTimeout(frostbiteAR, 9000)
    } else if(status == 2) {        
        timeout2 = setTimeout(fourAlarmShotgun, 5000) 
        timeout3 = setTimeout(frostbiteAR, 9000)
        timeout1 = setTimeout(desertAK, 1000) 
    } else {        
        timeout3 = setTimeout(frostbiteAR, 9000)
        timeout1 = setTimeout(desertAK, 1000) 
        timeout2 = setTimeout(fourAlarmShotgun, 5000) 
    }    
}

function stopTimeout() {
    clearTimeout(timeout1);
    clearTimeout(timeout2);
    clearTimeout(timeout3);
 }

function desertAK() {
    status = 0;
    document.getElementById("leser").innerHTML = '<iframe src="https://opskins.com/?loc=shop_search&sort=lh&app=433850_1&search_item=%22Desert%20Warfare%20AK-47%22"></iframe>';
 }
function fourAlarmShotgun() {
    status = 1;
    document.getElementById("leser2").innerHTML = '<iframe src="https://opskins.com/?loc=shop_search&sort=lh&app=433850_1&search_item=%22Four%20Alarm%2012GA%20Pump%20Shotgun%22"></iframe>';
}
function frostbiteAR() {
    status = 2;
    document.getElementById("leser").innerHTML = '<iframe src="https://opskins.com/?loc=shop_search&sort=lh&app=433850_1&search_item=%22Frostbite%20AR-15%22"></iframe>';
}
var timeout1、timeout2、timeout3;
var状态=0;
函数timedText(){
如果(状态+1==1){
timeout1=setTimeout(沙漠,1000)
timeout2=设置超时(四报警霰弹枪,5000)
timeout3=setTimeout(霜冻,9000)
}如果(状态==2){
timeout2=设置超时(四报警霰弹枪,5000)
timeout3=setTimeout(霜冻,9000)
timeout1=setTimeout(沙漠,1000)
}否则{
timeout3=setTimeout(霜冻,9000)
timeout1=setTimeout(沙漠,1000)
timeout2=设置超时(四报警霰弹枪,5000)
}    
}
函数stopTimeout(){
清除超时(超时1);
清除超时(超时2);
清除超时(超时3);
}
函数desertAK(){
状态=0;
document.getElementById(“leser”).innerHTML='';
}
函数fourAlarmShotgun(){
状态=1;
document.getElementById(“leser2”).innerHTML='';
}
函数frostbiteAR(){
状态=2;
document.getElementById(“leser”).innerHTML='';
}

Check this response@NewToJS的可能副本我已经读过了,但我不明白如何使用我的代码,我需要一些额外的帮助抱歉,我对javascript非常陌生!当我现在按下开始按钮时,会出现timedText未定义。。很抱歉,我看不出这里有什么不对现在我得到了“意外标识符”和“计时器未定义”我能问一下如果我想要一个
addEventListener
而不是
onclick=“Timer.stop();”
-我是这样尝试的:
Start
和这样的javascript代码:
var startbtn=document.getElementById(“startbtn”)
开始tn.addEventListener(“单击”,Timer.stop())但它不会工作startbn.addEventListener(“单击”,函数(){Timer.stop();})