Javascript在页面加载后启动setinterval

时间:2015-04-20 14:34:45

标签: javascript

我有一个脚本,在显示隐藏div之前显示秒数。

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);

问题是..即使页面未完全加载,计数也会自动开始。

如何在页面完全加载后开始计数?

5 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:1)

您可以在您的正文标记上设置“onload”事件,该事件会在您的内容加载后立即运行:

<body onload='yourFunction()'>

答案 2 :(得分:1)

您不应该直接分配您的onload,它将替换任何现有的onload。 经常使用Onload,因此覆盖它是一个坏主意。执行以下操作:

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

如果你能使用像jQuery这样的JS库,它可能会让你更轻松。您可以使用

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

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

答案 3 :(得分: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 **/
 });

我建议您使用加载功能来解决这个问题。祝你有个美好的一天

答案 4 :(得分:0)

如果您使用jQuery,请执行以下操作:

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

它的代码将在加载页面后运行。