2012-03-26 76 views
1

我尝试开发一个页面,我不得不使用setTimeout函数,因为我需要在两秒钟后在我的页面中加载我的视频。Javascript - setTimeout函数

为了做到这一点,我写了这个,

window.onload = function() { 
     player = new Player('playerObject'); 
     setTimeout(player.playByUrl($mp4Link),3000); 
    } 

,但是这是不工作,为什么?

+0

的可能的复制[?我如何调试我的JavaScript代码(http://stackoverflow.com/questions/988363/how-can-i-debug -my-javascript-code) – Liam 2016-06-14 09:57:07

回答

3

使用回叫:

setTimeout(function(){ 
    player.playByUrl($mp4Link); 
},3000); 

与您此前的说法,代码正在执行立即setTimeout(因为你是通过指定PARAM和括号如playByUrl($mp4Link)直接调用它)需要一个回调。

+1

说出*为什么*并解释OP的原始代码实际上在做什么会更有帮助。 – 2012-03-26 12:56:52

+0

ty。 3000意味着= 3秒? – user1277467 2012-03-26 13:00:20

+0

@ user1277467:是的,你是对的。 – Sarfraz 2012-03-26 13:03:36

3

您不能将参数添加到该功能。但是,您可以简单地使用anonymuos函数作为回调函数,并在其中调用函数(使用参数)。

window.onload = function() { 
    player = new Player('playerObject'); 
    setTimeout(function() { 
     player.playByUrl($mp4Link); 
    }, 3000); 
} 
1

的setTimeout需要一个功能

window.onload = function() { 
    player = new Player('playerObject'); 
    setTimeout(function(){ 
     player.playByUrl($mp4Link); 
    },3000); 
} 
1

你需要一个function引用传递到setTimeout,但我想从.playByUrl()返回值是不是一个函数。因此,无论用

setTimeout(function() { 
    player.playByUrl($mp4Link); 
},3000); 

去或使用ES5 .bind()

setTimeout(player.playByUrl.bind(null,$mp4Link),3000); 
0

player.playByUrl($mp4Link)是返回值。

尝试

setTimeout("player.playByUrl($mp4Link)",3000);

setTimeout(player.playByUrl,3000, $mp4Link);

后者不能与IE浏览器,所以应该进行修改。

+0

的window.onload =函数(){ 播放器=新播放器( 'playerObject'); setTimeout(player。playByUrl($ mp4Link),10000); }这是行不通的原因:( – user1277467 2012-03-26 13:21:19

+0

我已经在上面解释过了,'player.playByUrl($ mp4Link)'是除函数之外的一些值。 – onemach 2012-03-26 13:47:10

-1

尝试添加player.load();如下:

player.load(); 
    setTimeout(function(){ 
    player.setAttribute("src","http://www.w3school.com.cn/example/html5/mov_bbb.mp4"); 
    player.play(); 
    },5000)