2012-03-26 107 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)