2015-04-20 205 views
-3

我有一個腳本,顯示隱藏div前的秒數。頁面加載後啓動setinterval

var seconds_left = 20; 
var interval = setInterval(function() { 
    document.getElementById('timer_div').innerHTML = "Or wait " + --seconds_left + " seconds to play the video."; 
    if (seconds_left <= 0) 
    { 
    //alert('The video is ready to play.'); 
     $('#def').fadeOut('slow'); 
     clearInterval(interval); 
    } 
}, 1000); 

問題是......即使頁面未完全加載,計數也會自動啓動。

如何在頁面完全加載後開始計數?

回答

1

嘗試調用它在window.onload = function() { alert("It's loaded!") }

window.onload = function() { 
    someFunction(); 
} 


function someFunction() { 
    var seconds_left = 20; 
    var interval = setInterval(function() { 
     document.getElementById('timer_div').innerHTML = "Or wait " + --seconds_left + " seconds to play the video."; 
     if (seconds_left <= 0) { 
      //alert('The video is ready to play.'); 
      $('#def').fadeOut('slow'); 
      clearInterval(interval); 
     } 
    }, 1000); 
} 
+0

這只是讓你不要坐在膨脹的代碼裏面onload方法 – R4nc1d

+0

啊我看你在說什麼,我的錯誤我想我複製它很奇怪 – R4nc1d

+0

它現在看起來不錯,刪除我的評論;) – Wh1T3h4Ck5

1

你可以設置你的身體標記,一旦運行作爲你的內容「的onload」事件完成加載:

<body onload='yourFunction()'> 
1

你不應該直接指定你的onload,它會取代任何現有的onload。 Onload經常使用,所以重寫它是一個壞主意。做這樣的事情:

window.addEventListener ? 
 
window.addEventListener("load",yourFunction,false) : 
 
window.attachEvent && window.attachEvent("onload",yourFunction);

如果你能使用JS庫如jQuery它可能使事情變得更容易你。您可以使用

$(document).ready(function() { 
 
    // your code 
 
});

編號:https://ckon.wordpress.com/2008/07/25/stop-using-windowonload-in-javascript/

0

這裏是最好的方式,如果你真的想確保你的頁面完全加載:

$(function() { 
    // work when all HTML loaded except images and DOM is ready 
}); 

$(window).load(function() { 
    // this is come when complete page is fully loaded, including all 
    // frames, objects and images **/ 
}); 

使用的負載功能這個問題我建議你。有一個好的一天

0

如果你使用jQuery這樣做:

$(function(){ 
    //your code 
}); 

而且它的代碼時,頁面加載後會運行。