为什么第一个代码块工作而第二个代码块不? -
以下代码有效: -
// this code works --
<script src=".../popcorn-complete.min.js"></script>
var time_prompts = new Array();
time_prompts[0] = 2 //any integer < video duration
$popcorn.on( "timeupdate", function() {
console.log( this.currentTime() );
if (this.currentTime() > time_prompts[0] && this.currentTime() < time_prompts[0]+0.1) {
this.pause();
console.log(this.paused)
}
});
虽然以下代码不起作用: -
// this code DOES NOT work
<script src=".../popcorn-complete.min.js"></script>
var time_prompts = new Array();
time_prompts[0] = 2 //any integer < video duration
$popcorn.on( "timeupdate", function() {
console.log( this.currentTime() );
if (this.currentTime() == time_prompts[0]) {
this.pause();
console.log(this.paused)
}
});
( 2 代码块之间的唯一区别是'if语句'(条件))
答案 0 :(得分:1)
这是因为this.currentTime()
不是整数。它是包含浮点值的Number
。正如您在jsfiddle demo中提供的documentation所见,它不太可能获得圆整数值。因此,在这种情况下检查相等性是不合适的。您没有指定要使用代码实现的内容,但是如果要在播放后达到2秒后暂停视频,则应检查currentTime
是否大于2,然后设置一个变量将确保您只执行一次:
var time_prompts = [], once = true;
time_prompts[0] = 2 //any integer < video duration
$popcorn.on( "timeupdate", function() {
console.log( this.currentTime() );
if (this.currentTime() > time_prompts[0] && once) {
once = false;
this.pause();
console.log(this.paused)
}
});