【发布时间】:2021-03-05 20:15:05
【问题描述】:
所以我制作了一个有趣和练习的应用程序......在应用程序中,我需要一个只运行特定时间(如 1 分钟或 15 分钟)然后重新启动到主要统计数据的函数。
我注意到我不知道如何让某个函数运行一段时间然后它又回来了。
在我搜索并尝试了几个小时之后,这就是我所做的:
function start() {
let div = document.createElement('div');
div.id = 'div'
let button1 = document.createElement('button');
button1.type = 'button';
button1.className = 'btn btn-warning col-5 mt-1 mr-5';
button1.innerHTML = 'I did it!';
button1.id = 'button1';
button1.onclick = function didit() {
alert(' I did it!')
// earn exp
// next img
}
let button2 = document.createElement('button');
button2.type = 'button';
button2.className = 'btn btn-warning col-5 mt-1';
button2.innerHTML = 'Não Consegui :(';
button2.id = 'button2';
button2.onclick = function giveup() {
alert('giveup')
//earn 0 exp
//next img
}
div.appendChild(button1);
div.appendChild(button2);
let button = document.getElementById('button');
button.before(div);
button.remove();
// restart
setTimeout(restart(), 1 * 60 * 1000);
}
function restart() {
let button3 = document.createElement('button');
button3.type = 'button';
button3.className = 'btn btn-warning col-12 mt-1 mr-5';
button3.onclick = function start();
button3.innerHTML = 'Start';
button3.id = 'button';
let div = document.getElementById('div');
div.before(button);
div.remove();
}
<button type="button" class="btn btn-warning col-12 mt-1 mr-5 ml-0" onclick="start()" id="button">Start</button>
我认为应该是这样的。但我收到一个错误:/ 如果它太大了,请见谅。
【问题讨论】:
-
setTimeout()的第一个参数应该是函数名,而不是对函数的调用。 -
嗨,有趣的是,您遇到了什么错误?也许在
setTimeout(restart, delay)中传递函数,而不是立即用restart()调用函数developer.mozilla.org/en-US/docs/Web/API/… -
setTimeout有一段时间没有运行函数。它等待这段时间,然后运行该函数。 -
您应该做的是在用户开始游戏时将时间保存在一个变量中。然后,事件侦听器可以检查当前时间是否小于开始时间的 15 分钟。如果是在超时之后,他们什么都不做。
-
您也可以使用
setTimeout()来运行禁用按钮的功能。
标签: javascript function set timeout