包装在setTimeout中时出错"无法读取未定义的属性"

Kay*_*bop 6 javascript jquery

我一直在处理一段代码,用于处理单个网页上的多个小视频元素,但我无法使多个进度条与各自的视频同步.

(当前的jsFiddle原型)

这段代码$(this).find("progress").attr("value", $("video", this)[0].currentTime);似乎在main函数内部工作,但是当我将它包装在另一个函数中时,setTimeout进度条实际上是动画的,我得到了这个错误:

"无法在函数中读取未定义的属性'currentTime' "

我已经尝试了一些变化,看看我是否可以让它自己工作,但我无法通过像往常一样在墙上抛出代码来修复它.

有人能告诉我为什么这样做吗?

Sur*_*yan 7

setTimeoutthis的不是主要的this.所以你的代码不起作用.要在setTimeout中工作,您需要this在setTimeout之前获取并使用它.

var that = this;
setTimeout(function(){
 // here use that
},100);
Run Code Online (Sandbox Code Playgroud)