【问题标题】:Why I do not work correctly buttons start time?为什么我不能正常工作按钮开始时间?
【发布时间】:2019-02-21 12:43:49
【问题描述】:

我使用媒体元素播放器

我的代码(为什么在这里不起作用)

(function() {

  'use strict';

  let media;
  let mediaBtn = document.querySelectorAll(".button-play");
  let mediaBtnPause = document.querySelectorAll(".button-pause");
  let mediaTime;
  let mediaTimeParts;
  let mediaTimeSeconds;

  $("iframe").mediaelementplayer({
    success: function(mediaElement, domObject) {
      media = mediaElement;
    }
  });

  for (let i = 0; i < mediaBtn.length; i++) {

    let mediaBtns = mediaBtn[i];

    mediaTime = mediaBtns.innerHTML;

    mediaTimeParts = mediaTime.split(':');

    mediaTimeSeconds = (+mediaTimeParts[0]) * 60 * 60 + (+mediaTimeParts[1]) * 60 + (+mediaTimeParts[2]);

    //console.log(i + ' ' + mediaTimeSeconds);

    mediaBtns.addEventListener('click', function() {
      media.setCurrentTime(mediaTimeSeconds);
      media.play();

      console.log('Click button # ' + i);
    });

  }


})();
button {
  cursor: pointer;
  margin: 10px;
  padding: 5px 15px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mediaelement/4.2.9/mediaelement-and-player.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/mediaelement/4.2.9/mediaelementplayer.min.css">

<!-- video 1 -->
<div class="media-wrapper">
  <iframe class="video" width="560" height="315" src="https://www.youtube.com/embed/HIbAz29L-FA?modestbranding=1&playsinline=0&showinfo=0&enablejsapi=1&origin=https%3A%2F%2Fintercoin.org&widgetid=1" frameborder="0" allowfullscreen></iframe>

  <button class="button-play">00:00:10</button>
  <button class="button-play">00:00:20</button>
  <button class="button-pause">pause</button>
</div>
<!-- video 1 -->

例如fiddle

现在事实证明,当您单击任何按钮(暂停除外)时 - 从最后一个按钮的值开始。在本例中,从 20 秒开始。

例如,当您点击按钮"&lt;button class="button-play"&gt; 00:00:10&lt;/button&gt;" - 视频从 20 秒开始(从最后一个按钮的值开始)

为什么会这样?

如何解决这个问题?

提前谢谢你

【问题讨论】:

    标签: javascript jquery html css html5-video


    【解决方案1】:

    因为每次运行 for 循环时都会重新分配 mediaTimeSeconds。因此,它被分配最后一个值,而按钮在分配后被单击。您需要将其更改为

    (function() {
    
      'use strict';
    
      let media;
      let mediaBtn = document.querySelectorAll(".button-play");
      let mediaBtnPause = document.querySelectorAll(".button-pause");
      let mediaTime;
      let mediaTimeParts;
    
      $("iframe").mediaelementplayer({
        success: function(mediaElement, domObject) {
          media = mediaElement;
        }
      });
    
      for (let i = 0; i < mediaBtn.length; i++) {
    
        let mediaBtns = mediaBtn[i];
    
        mediaTime = mediaBtns.innerHTML;
    
        mediaTimeParts = mediaTime.split(':');
    
        const mediaTimeSeconds = (+mediaTimeParts[0]) * 60 * 60 + (+mediaTimeParts[1]) * 60 + (+mediaTimeParts[2]);
    
        //console.log(i + ' ' + mediaTimeSeconds);
    
        mediaBtns.addEventListener('click', function() {
          media.setCurrentTime(mediaTimeSeconds);
          media.play();
    
          console.log('Click button # ' + i);
        });
    
      }
    
    
    })();
    

    【讨论】:

    • 非常感谢。我可以再问一个问题jsfiddle.net/5a7yoe8c/1 如果从视频中添加第二个块,这些按钮也适用于视频中的最后一个块。
    • 我认为是因为media = mediaElement; 这一行。它将媒体分配给最后一个
    猜你喜欢
    • 1970-01-01
    • 2023-02-02
    • 2023-03-25
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多