Javascript 闪烁文本问题

Javascript 闪烁文本问题,javascript,jquery,Javascript,Jquery,我有一个脚本,使文本在特定颜色和灰色之间交替。它在两种颜色之间每秒左右闪烁一次。我的代码是: HTML位 我遇到的问题是,页面中运行HTML的部分每10秒刷新一次。这会导致闪烁的计时混乱。它会像我说的那样每秒开始闪烁,然后当页面部分刷新时,它会快速闪烁并继续,除非再次手动刷新整个页面 你知道怎么阻止吗?我想计时器没有被重置或者其他什么。。。或者当它捕捉到当前颜色时,它会捕捉到灰色?不确定:s因为您不断添加计时器,所以速度一直在加快。因此,添加一个检查以查看它是否已定义并取消它 <scrip

我有一个脚本,使文本在特定颜色和灰色之间交替。它在两种颜色之间每秒左右闪烁一次。我的代码是:

HTML位 我遇到的问题是,页面中运行HTML的部分每10秒刷新一次。这会导致闪烁的计时混乱。它会像我说的那样每秒开始闪烁,然后当页面部分刷新时,它会快速闪烁并继续,除非再次手动刷新整个页面


你知道怎么阻止吗?我想计时器没有被重置或者其他什么。。。或者当它捕捉到当前颜色时,它会捕捉到灰色?不确定:s

因为您不断添加计时器,所以速度一直在加快。因此,添加一个检查以查看它是否已定义并取消它

<script>
    if (typeof flashTimer !== "undefined") {
       window.clearTimeout(flashTimer);
    }
    flashTimer = setInterval( function() {
        flashtext('flashingtext','<? echo $name_color ?>');
     }, 500 );
</script>

if(flashTimer的类型!=“未定义”){
clearTimeout(flashTimer);
}
flashTimer=setInterval(函数(){
flashtext('flashingtext','');
}, 500 );

时间同步是指在动画中使用服务器时间:

this.onload = function(){
        var ts0 = <?=round(microtime(true)*1000);?>;
        var dt = new Date()-ts0;
        var blink = function(){
            console.log(Math.ceil((new Date()-dt)/1000)%2);
            requestAnimationFrame(blink);
        }
        blink();
    }
this.onload=function(){
var-ts0=;
var dt=新日期()-ts0;
var blink=函数(){
console.log(Math.ceil((new Date()-dt)/1000)%2);
请求动画帧(闪烁);
}
眨眼();
}

通过这种方式,无论何时刷新页面,闪烁都保持一致。

将servertime添加到javascript函数中,并将闪烁与iThanks同步,但不确定如何使用@Rhumborl,生活会轻松得多。使用几个CSS3转换,您可以在不使用javascript的情况下重新创建闪烁。:)仅供参考,没有“jQuery函数”这样的东西。这是一个JavaScript函数。最重要的是,我没有看到在代码片段上使用jQuery。
<script>
    if (typeof flashTimer !== "undefined") {
       window.clearTimeout(flashTimer);
    }
    flashTimer = setInterval( function() {
        flashtext('flashingtext','<? echo $name_color ?>');
     }, 500 );
</script>
this.onload = function(){
        var ts0 = <?=round(microtime(true)*1000);?>;
        var dt = new Date()-ts0;
        var blink = function(){
            console.log(Math.ceil((new Date()-dt)/1000)%2);
            requestAnimationFrame(blink);
        }
        blink();
    }