2011-12-03 75 views
0

我正在使用此代碼在我的網站上使我的標誌閃爍。但是當它在瀏覽時繼續閃爍時會變得令人討厭,我怎麼能設置一個時間讓它在頁面加載的前15秒閃爍,然後停止?我使用設置閃爍動畫的時間img

JS代碼:

$(document).ready(
function(){ 
    var t; 
    const fparam = 100; 
    const uparam = 100; 
    window.flickr = function(){ 
     if(Math.round(Math.random())){ 
      $("#logodcoi").css("visibility","hidden"); 
      t = setTimeout('window.unflickr()',uparam); 
     } 
     else 
      t = setTimeout('window.flickr()',fparam); 
    } 
    window.unflickr = function(){ 
     if(Math.round(Math.random())){ 
      $("#logodcoi").css("visibility","visible"); 
      t = setTimeout('window.flickr()',fparam); 
     } 
     else 
      t = setTimeout('window.unflickr()',uparam); 
    } 

    t = setTimeout('window.flickr()',fparam); 
}); 

回答

2

你可以有一個計數器,你是否要設置其他超時,你再使用來決定。作爲一個方面說明,你不應該添加函數到窗口然後傳遞一個字符串到setTimeout。始終只是通過本身的功能:

$(document).ready(function(){ 
    var t; 
    var amount = 0; 
    const fparam = 100; 
    const uparam = 100; 

    function timeout(f, t) { // this function delegates setTimeout 
     if(amount++ < 150) { // and checks the amount already (un)flickered 
      setTimeout(f, t); // (150 * 100 ms = 15 s) 
     } 
    } 

    var flickr = function(){ 
     if(Math.round(Math.random())){ 
      $("#logodcoi").css("visibility","hidden"); 
      t = timeout(unflickr,uparam); 
     } 
     else 
      t = timeout(flickr,fparam); 
    }; 

    var unflickr = function(){ 
     if(Math.round(Math.random())){ 
      $("#logodcoi").css("visibility","visible"); 
      t = timeout(flickr,fparam); 
     } 
     else 
      t = timeout(unflickr,uparam); 
    }; 

    t = timeout(flickr,fparam); 
}); 
+0

太棒了!不過,出於某種原因。看起來像在每隔一次頁面刷新後,超時之後 - 標誌在超時後完全消失? –

+0

@ cam77:或許它以'flickr'結尾,以便最終狀態爲「不可見」。你可以這樣做,當'amount === 150''然後顯示標誌。 – pimvdb

+0

我明白了。對不起,我怎麼寫這個?之後的東西;如果(金額++ <150){和像'(金額=== 150)顯示:#logodcoi'? –

1

我看到你使用jQuery,您可以使用以下,如果我沒有記錯,因爲所有1.0下面我用的東西已經在jQuery的,所以你應該好:

counter = 1; 
function hideOrShow(){ 
      $(".classToSelect").animate({"opacity": "toggle"}, 100); 
      counter = counter +1; 
      if (counter >= 21) clearInterval(flickerInterval); 
} 
flickerInterval = setInterval(hideOrShow, 100);  

將選擇器,動畫持續時間和變量名稱更改爲任何您想要的/需要的。

+0

根據你想讓它閃爍的次數做相應的數學運算並相應地設置極限(我剛剛從厚厚的空氣中拉出了21個),以便最後一次迭代將不透明度切換爲1而不是0! ;) – balach