Javascript 一个HTML页面上有多个计时器

Javascript 一个HTML页面上有多个计时器,javascript,html,timer,Javascript,Html,Timer,我有以下JavaScript代码来更新页面上的分幅: var delayMinimum = 1000; var delayMaximum = 5000; function UpdateTiles() { var width = 0; var delay = 0; var percent = 0; var divNameLabel = ""; var divNameValue = ""; var divNameProgress = "";

我有以下JavaScript代码来更新页面上的分幅:

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);

这是可行的,但是在每次迭代中更新的任何分片都会一次更新。我怎么能为每次更新都有不同间隔的独立计时器呢?

您只有一个计时器:
窗口。设置超时(UpdateTimes,delay)
,根据需要添加更多计时器以便有多个计时器

你为什么把代码复制了三次?
改为使用函数,并在每个函数中设置超时。

您只有一个计时器:
窗口。设置超时(updateiles,delay)
,根据需要添加更多计时器,以便拥有多个计时器

你为什么把代码复制了三次? 改为使用函数,并在每个函数中设置超时。

考虑以下解决方案

我简化了它,为所有3个调用使用了1个函数,现在它们在不同的(随机)时间更新。调用更新的关键是下面一行

setTimeout(function () {updateTileSet(label,value,progress)}, delay);
考虑以下问题作为解决方案

我简化了它,为所有3个调用使用了1个函数,现在它们在不同的(随机)时间更新。调用更新的关键是下面一行

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

通过拥有独立的定时器和独立的功能。您可以让每个tile由不同的函数处理,并且每个函数都以不同的间隔调用。当然,您仍然可以有一个单独的时间间隔,然后在计时器启动时调用所有的磁贴更新函数,以获得与现在相同的功能。您可以让每个tile由不同的函数处理,并且每个函数都以不同的间隔调用。当然,您仍然可以有一个单一的间隔,然后在计时器触发时调用所有的tile update函数,以获得与现在相同的功能。