Javascript-setTimeout函数

Javascript-setTimeout函数,javascript,Javascript,我尝试开发一个页面,我必须使用setTimeout函数,因为我需要在两秒钟后在页面中加载视频 为了做到这一点,我写了这个 window.onload = function () { player = new Player('playerObject'); setTimeout(player.playByUrl($mp4Link),3000); } 但这不起作用为什么 使用回调: setTimeout(function(){ player.play

我尝试开发一个页面,我必须使用setTimeout函数,因为我需要在两秒钟后在页面中加载视频

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

 window.onload = function () {
        player = new Player('playerObject');
        setTimeout(player.playByUrl($mp4Link),3000);
    }
但这不起作用为什么

使用回调:

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

在前面的语句中,代码立即执行(因为您是通过指定param和括号直接调用它的,例如
playByUrl($mp4Link)
),而
setTimeout
需要回调。

无法向函数添加参数。但是,您可以简单地使用anonymuos函数作为回调函数,并调用其中的函数(使用参数)


setTimeout需要一个函数

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

您需要将
函数
引用传递给
设置超时
,但我猜
.playByUrl()
的返回值不是函数。所以要么去

setTimeout(function() {
    player.playByUrl($mp4Link);
},3000);
或者使用ES5
.bind()

player.playByUrl($mp4Link)
是返回值

试一试

setTimeout(“player.playByUrl($mp4Link)”,3000

setTimeout(player.playByUrl,3000,$mp4Link)


后者不适用于IE,因此应进行修改。

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

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

说明原因并解释OP的原始代码实际上在做什么会更有帮助。@user1277467:是的,你是对的。Player.prototype.playByUrl=function(url){this.object.data=url;return this.play();}这是我调用的函数,而不是work window.onload=function(){Player=new Player('playerObject');setTimeout(player.playByUrl.bind(null,$mp4Link),3000);}whywindow.onload=function(){player=new player('playerObject');setTimeout(player.playByUrl($mp4Link),10000);}这不起作用的原因:(我已经在上面解释过了。
player.playByUrl($mp4Link)
是函数以外的某个值。可能与
setTimeout(player.playByUrl.bind(null,$mp4Link),3000);
  player.load();
  setTimeout(function(){ 
    player.setAttribute("src","http://www.w3school.com.cn/example/html5/mov_bbb.mp4");
    player.play();
  },5000)