首页 > 解决方案 > 我正在调用一个函数 onclick,并将超时设置为 1 秒,如何禁用该函数的超时?

问题描述

我有一个按钮,它会在点击时激活一个功能,该功能有一个设置的超时时间,所以它会重复

function chooseNum() {
    let timeout = setTimeout(chooseNum, 1000);
}

我想在另一个功能中禁用它,我试过这个:

function initStop() {
    clearTimeout(timeout);
}

HTML是这样的:

<button onclick="initStop()" id="stop" class="btn btnStop">Stop</button>
<button onclick="chooseNum()" id="start" class="btn btn1">Start</button>

标签: javascripthtml

解决方案


超时的范围是chooseNum函数的本地范围

为了解决你的问题

var timeout;

function chooseNum() {
    timeout = setTimeout(chooseNum, 1000);
}

function initStop() {
    clearTimeout(timeout);
}

这将在全局范围内创建 timout 变量,并在chooseNum()函数中初始化。


推荐阅读