Javascript - 为什么这个setTimeout函数不起作用?

时间:2015-03-04 14:20:12

标签: javascript html css settimeout

对于我的生活,我似乎无法从这个片段中得到任何结果。我希望函数添加,然后删除一个额外的类,其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>的{​​{1}}事件中调用。代码段位于页面的最底部,位于onload=标记的正上方。

帮助?

谢谢,

〜锡安

2 个答案:

答案 0 :(得分:2)

作为Pablo said,它们一个接一个地发生,一秒钟后发生。

如果你希望第二个之后发生第二个

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或者什么,你肯定会等到第一个完成,然后再安排第二个。)

答案 1 :(得分:0)

他们几乎都在同一个案件中开火。一次超时不会等待另一次。只需将第二个更改为2000:

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