2012-03-26 30 views
1

私はページを開発しようとしています.2秒後に私のページにビデオをロードする必要があるので、setTimeout関数を使用する必要があります。Javascript - setTimeout function

ことを行うために、私は、

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

これを書いたが、これは、なぜ動作しませんか?

+0

可能な複製(http://stackoverflow.com/questions/988363/how-can-i-debug [どのように私は私のJavaScriptコードをデバッグすることができますか?] -my-javascript-code) – Liam

答えて

3

使用するコールバック:

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

あなたの前の文でsetTimeoutがコールバックを必要とするのに対し、(あなたはPARAMと括弧例えばplayByUrl($mp4Link)を指定することで、それを直接呼び出していたので)、コードがすぐにを実行していました。

+1

*理由*とOPのオリジナルコードが実際に何をしているのかを説明するほうが助かります。 –

+0

ty。 3000は平均= 3秒ですか? – user1277467

+0

@ user1277467:はい、あなたは正しいです。 – Sarfraz

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

が必要ですあなたはsetTimeoutfunctionの参照を渡す必要がありますが、私は.playByUrl()からの戻り値が関数ではありませんね。だから、

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

で行くか、ES5 .bind()

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

player.playByUrl($mp4Link)を使用するか返される値です。

は、後者がIEで動作しないので、変更する必要があり

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

又は

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

を試みます。

+0

window.onload = function(){ プレーヤー=新しいプレーヤー( 'playerObject');setTimeout(player。playByUrl($ mp4Link)、10000); }これはなぜうまくいきません:( – user1277467

+0

私は上記で説明しました。 'player.playByUrl($ mp4Link)'は関数以外の値です。 – onemach

-1

は以下の通りplayer.load();を追加しよう:の

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