javascript - 同一时刻只有一个定时器在工作(html+js)

标签 javascript html

我有一个计时器,我希望它位于我网站的两个不同位置。但当时只有一个在工作。

这是脚本+下面的第一个计时器。

 <script>
    var interval;
    var minutes = 8;
    var seconds = 41;
    window.onload = function() {
        countdown('countdown');
        myFunction();
        myFunctiontoo();

    }

    function countdown(element) {
        interval = setInterval(function() {
            var el = document.getElementById("timerx");
            if(seconds == 0) {
                if(minutes == 0) {
                    el.innerHTML = "Free trial bonus has expired!";                    
                    clearInterval(interval);
                    return;
                } else {
                    minutes--;
                    seconds = 60;
                }
            }
            if(minutes > 0) {
                var minute_text = minutes + (minutes > 1 ? ' minutes' : ' minute');
            } else {
                var minute_text = '';
            }
            var second_text = seconds > 1 ? 'seconds' : 'second';
            el.innerHTML = minute_text + ' ' + seconds + ' ' + second_text + '';
            seconds--;
        }, 1000);
    }
    </script>

    <div class="countdown"><span style="color:#EA0423;">Free Trial bonus ends in </span><span id="timerx" style="font-weight:bold;">8 minutes and 42 seconds</span>.
  </div>

在我的 HTML 代码中,我有另一个计时器。

<span style="color:#FFF1D6;">Free Trial bonus ends in </span><span id="timerx" style="font-weight:bold;">8 minutes and 42 seconds</span>.

不幸的是,第二个计时器不起作用。

最佳答案

除 getElementsByClassName 之外的方法 getElementById 仅返回一个 DOM 元素。

方法 getElementsByClassName 返回一个元素数组,以便您可以使用索引获取它们

这是工作示例:PLUNKER

您可以使用 getElementsByClassName,您的代码将如下所示:

    function countdown(element) {
    var start_value = "Free trial bonus has expired!"
    interval = setInterval(function() {
        var el1 = document.getElementsByClassName("timerx")[0];
        var el2 = document.getElementsByClassName("timerx")[1];
        if(seconds == 0) {
            if(minutes == 0) {
                el1.innerHTML = start_value;                    
                el2.innerHTML = start_value;                    
                clearInterval(interval);
                return;
            } else {
                minutes--;
                seconds = 60;
            }
        }
        if(minutes > 0) {
            var minute_text = minutes + (minutes > 1 ? ' minutes' : ' minute');
        } else {
            var minute_text = '';
        }
        var second_text = seconds > 1 ? 'seconds' : 'second';
        el1.innerHTML = minute_text + ' ' + seconds + ' ' + second_text + '';
        el2.innerHTML = minute_text + ' ' + seconds + ' ' + second_text + '';
        seconds--;
    }, 1000);
}

关于javascript - 同一时刻只有一个定时器在工作(html+js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35457965/

相关文章:

javascript - 单击 isClearable 图标(仅限移动设备)时,如何阻止打开 react 选择输入下拉菜单?

html - 我有一个 HTML 格式的幻灯片放映代码,但是有时在使用 chrome 或 mozilla 刷新页面时,所有图像都会堆叠起来

javascript - 为什么父级显示子级的 offsetTop 值?

Javascript正则表达式将字符串解析为数字并进行一些计算

javascript - 编写 .d.ts 文件以便我可以与 JavaScript 和 TypeScript 共享常量?

javascript - 为什么两个变量都是 JQuery 对象,而 .css 属性却对其中一个不起作用?

html - Chrome 在登录页面中建议密码

javascript - 具有 Angular 分量的动态嵌套 View

php - 数据库找不到用户(html 输入字段)

评论中的 HTML 评论?