0

为什么第一个代码块工作而第二个代码块不工作?--

以下代码有效:-

// 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)
              }  
          });

(两个代码块之间的唯一区别是'if语句'(条件)

4

1 回答 1

1

发生这种情况是因为this.currentTime()不是整数。它是一个Number包含浮点值的值。正如您在文档中提供的jsfiddle 演示中看到的那样,它不太可能获得整数值。所以在这种情况下检查相等性是不合适的。你没有指定你想用你的代码实现什么,但是如果你想在播放到 2 秒后暂停视频,你应该检查是否大于 2,然后设置一个变量来确保你这样做只有一次:currentTime

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)
      }  
  });
于 2013-08-20T08:12:59.357 回答