Javascript-为什么不是't此setTimeout函数正在工作

Javascript - Why isn't this setTimeout function working?

本文关键字:函数 setTimeout 工作 为什么不 Javascript-      更新时间:2023-09-26

就我而言,我似乎无法从这个片段中获得任何结果。我希望函数在每次执行后向id为"ring"的所有元素添加一个额外的类,然后再添加一个延迟。setTimeout()函数的其他示例就是这样编写的。

function flash_rings()
{
    var e = document.getElementById("ring");
    setTimeout(function(){e.className = "ring hover";}, 1000);
    setTimeout(function(){e.className = "ring";}, 1000);
}

这个类已经编写并测试过了,所以我知道这不是CSS的错。该函数将在<body>onload=事件中调用。代码片段位于页面的最底部,紧挨着</body>标记的上方。

帮助?

谢谢,

~锡安

正如Pablo所说,它们一个接一个地发生,一秒钟后。

如果您希望第二次发生在第一次之后的第二次

function flash_rings()
{
    var e = document.getElementById("ring");
    setTimeout(function(){
        e.className = "ring hover";
        setTimeout(function(){
            e.className = "ring";
        }, 1000);
    }, 1000);
}

function flash_rings()
{
    var e = document.getElementById("ring");
    setTimeout(function(){ e.className = "ring hover"; }, 1000);
    setTimeout(function(){ e.className = "ring"; }, 2000);
}

后一个连接有点少,但你可以相当肯定的是,第二个连接会在第一个连接后一秒发生,除非页面真的忙于做其他事情。(如果第一个不是是计时器,你就不会这么做;如果是ajax之类的,你肯定会等到第一个完成后再安排第二个。)

它们几乎都在同一个实例中启动。一个超时不会等待另一个超时。把那一秒改成2000:

setTimeout(function(){e.className = "ring";}, 2000);