JavaScript clearTimeout() 函数

JavaScript clearTimeout() 语法

clearTimeout() 是 JavaScript 的一个全局函数(也叫 “全局方法” ),它用于清除 setTimeout() 实现的定时器。

在浏览器环境中,clearTimeout() 是 window 对象的方法。而在 Node.js 环境中,它是 global 对象的方法。

语法:

clearTimeout(timerID)

说明:

clearTimeout() 方法接收单个参数。

  • timerID(必选):它是 setTimeout() 的返回值。

setTimeout() 会返回一个值(浏览器返回一个正整数、Node.js 返回一个对象),该值用于标识定时器的 ID。我们可以将此 ID 与 clearTimeout() 一起使用,从而达到取消定时器的目的。

注意: 虽然 setTimeout()setInterval() 在某些浏览器环境中它们的 ID 可能互通,但为了代码的规范和安全,请务必坚持专人专用:setTimeout 配 clearTimeout,setInterval 配 clearInterval()

JavaScript clearTimeout() 摘要

属于 JavaScript window 对象
使用频率
官方文档 查看
MDN 查看

JavaScript clearTimeout() 示例

接下来,我们通过一个简单的例子来讲解一下 JavaScript clearTimeout() 方法是如何使用的。

示例:clearTimeout() 基本用法

<!DOCTYPE html> 
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
    <p>点击【开始】按钮,3秒后提示欢迎语。</p>
    <button type="button">开始</button>
    <button type="button">暂停</button>

    <script>
        // 注意:这里需要获取 "button" 标签,而不是原来的 "input"
        const oBtns = document.getElementsByTagName("button");
 
        let timer = null;
 
        // 3. 使用 addEventListener 监听事件
        // 绑定第一个按钮(开始)
        oBtns[0].addEventListener("click", function() {
            // 为了防止用户多次点击导致开启多个定时器,
            // 实际开发中通常建议在这里加一行 clearTimeout(timer);
            timer = setTimeout(() => {
                alert("欢迎来到绿叶网");
            }, 3000);
        });

        // 绑定第二个按钮(暂停/取消)
        oBtns[1].addEventListener("click", function() {
            clearTimeout(timer);
        });
    </script>
</body>
</html>

页面效果如下图所示。

clearTimeout() 示例

分析:

当我们单击【开始】按钮,3 秒后就会弹出对话框。如果在单击【开始】按钮之后,并且在 3 秒内再单击【暂停】按钮,就不会弹出对话框。

这里定义了一个变量 timer 用于保存 setTimeout() 这个定时器,以便使用 clearTimeout(timer) 来清除(暂停)。

注意: 即使我们不显式地主动使用 clearTimeout() 来清除 setTimeout() 定时器,定时器到时间后也会自动被清除。

clearTimeout() 与 clearInterval() 的区别

clearTimeout() 和 clearInterval() 都是用于清除一个定时器,它们之间的区别在于:

  • 对于 setTimeout() 实现的定时器,应该使用 clearTimeout() 来取消。
  • 而对于 setInterval() 实现的定时器,应该使用 clearInterval() 来取消。

上一篇: setInterval()

下一篇: clearInterval()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号