javascript - 单个 HTML 页面上的多个计时器

标签 javascript html timer

我有以下 JavaScript 代码来更新页面上的图 block :

var delayMinimum = 1000;
var delayMaximum = 5000;

function UpdateTiles()
{
    var width = 0;
    var delay = 0;
    var percent = 0;
    var divNameLabel = "";
    var divNameValue = "";
    var divNameProgress = "";

    if (Math.floor((Math.random() * 100) + 1) > 30)
    {
        percent = Math.floor((Math.random() * 100) + 1);
        width = Math.floor(80 * percent / 100);
        divNameLabel = "DivDashboardTileTemplatesLabel";
        divNameValue = "DivDashboardTileTemplatesValue";
        divNameProgress = "DivDashboardTileTemplatesProgress";
        document.getElementById(divNameValue).innerText = percent.toString() + "%";
        $("div#" + divNameProgress).animate({ width: (width.toString() + "px"), }, delayMinimum);
    }

    if (Math.floor((Math.random() * 100) + 1) > 30)
    {
        percent = Math.floor((Math.random() * 100) + 1);
        width = Math.floor(80 * percent / 100);
        divNameLabel = "DivDashboardTileDocumentsLabel";
        divNameValue = "DivDashboardTileDocumentsValue";
        divNameProgress = "DivDashboardTileDocumentsProgress";
        document.getElementById(divNameValue).innerText = percent.toString() + "%";
        $("div#" + divNameProgress).animate({ width: (width.toString() + "px"), }, delayMinimum);
    }

    if (Math.floor((Math.random() * 100) + 1) > 30)
    {
        percent = Math.floor((Math.random() * 100) + 1);
        width = Math.floor(80 * percent / 100);
        divNameLabel = "DivDashboardTileFormsLabel";
        divNameValue = "DivDashboardTileFormsValue";
        divNameProgress = "DivDashboardTileFormsProgress";
        document.getElementById(divNameValue).innerText = percent.toString() + "%";
        $("div#" + divNameProgress).animate({ width: (width.toString() + "px"), }, delayMinimum);
    }

    delay = Math.floor((Math.random() * (delayMaximum - delayMinimum)) + delayMinimum);
    window.setTimeout(UpdateTiles, delay);
}

$(document).ready(UpdateTiles);

这可行,但每次迭代中更新的任何图 block 都会立即更新。我怎样才能为每次更新设置不同间隔的独立计时器?

最佳答案

考虑以下JSFiddle作为解决方案。

我通过对所有 3 个调用使用 1 个函数来简化它,并且它们现在在不同(随机)时间更新。调用更新的关键是以下行。

setTimeout(function () {updateTileSet(label,value,progress)}, delay);

关于javascript - 单个 HTML 页面上的多个计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36111272/

相关文章:

html - 用html紧密显示图像

emacs - with-timeout 示例用法(哪些原语可以等待?)

javascript - 问答游戏的计时器在重新启动时不断加快

javascript - 我们如何处理共享域中的其他 Web 应用程序不正确地将 cookie 范围限定到父域的情况?

JavaScript 代码无法检查单选按钮

javascript - 单击时按钮不改变其位置

javascript - 悬停时我的 h1 标签链接出现下划线,我没有添加

javascript - 循环遍历一个json,找到所有具有特定首字母的键并将其放入另一个json中

html - 正文元素中的图片 : url issues?

java - g.drawString Java,如何刷新字符串?