• js秒数倒计时


    代码

    /**
     * 调用回调函数
     * @param callback 回调函数体
     * @param args 参数
     */
    execCallback: function (callback, args) {
        if (callback != null
            && typeof (callback) === 'function'
            && callback instanceof Function
            && Object.prototype.toString.call(callback) === '[object Function]'
           ) {
            callback(args)
        }
    }
    /**
     * 倒计时
     * @param options.time 开始倒计时的时间
     * @param options.setup 每次倒计时回调
     * @param options.end 结束时回调
     */
    countdown: (options) => {
        options.time = options.time || 0;
        options.setup = options.setup || ((num) => console.info('countdown:setup:' + num));
        options.end = options.end || ((num) => console.info('countdown:end:' + num));
        if (!config.isEmpty(options.time)) {
            // 倒计时
            let num = parseInt(options.time);
            let tim = setInterval(() => {
                if (num <= 0) {
                    clearInterval(tim);
                    execCallback(options.end, num);
                } else {
                    num--;
                    execCallback(options.setup, num);
                }
            }, 1000);
        }
    }
    

    实例:

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>倒计时</title>
    </head>
    <body>
    <h1 id="date"></h1>
    <script>
        /**
         * 调用回调函数
         * @param callback 回调函数体
         * @param args 参数
         */
        function execCallback(callback, args) {
            if (callback != null
                && typeof (callback) === 'function'
                && callback instanceof Function
                && Object.prototype.toString.call(callback) === '[object Function]'
            ) {
                callback(args)
            }
        }
    
        /**
         * 倒计时
         * @param options.time 开始倒计时的时间
         * @param options.setup 每次倒计时回调
         * @param options.end 结束时回调
         */
        function countdown(options) {
            options.time = options.time || 0;
            options.setup = options.setup || ((num) => console.info('countdown:setup:' + num));
            options.end = options.end || ((num) => console.info('countdown:end:' + num));
            // 倒计时
            let num = parseInt(options.time);
            let tim = setInterval(() => {
                if (num <= 0) {
                    clearInterval(tim);
                    execCallback(options.end, num);
                } else {
                    num--;
                    execCallback(options.setup, num);
                }
            }, 1000);
        }
    
        // 使用
        countdown({
            time: 15,
            setup: (num) => {
                document.getElementById("date").innerHTML = `时间末日将在 ${num}秒 后来临!!!`;
            },
            end: (num) => {
                document.getElementById("date").innerHTML = "哈哈,骗你的。";
            }
        });
    </script>
    </body>
    </html>
    
  • 相关阅读:
    功能测试--电梯测试项
    进程
    基于UDP协议的socket编程
    自定义报头解决粘包问题
    基于TCP协议的socket编程
    python3 中encode 和decode的使用方法。
    反射---hasattr、getattr、setattr、delattr
    摘要算法---hashlib模块下MD5和SHA的使用
    日志模块---logging
    staticmethod、classmethod的使用
  • 原文地址:https://www.cnblogs.com/lixingwu/p/11821601.html
Copyright © 2020-2023  润新知