javascript - 暂停多个 HTML5 视频

标签 javascript video html

我在 http://ghostpool.com/wordpress/phideo 的 slider 中有多个 HTML5 视频当我点击任何 slider 按钮时,第一个视频会使用以下 onclick 函数暂停。

<a href="#" onclick="pausePlayer();">LINK</a>


var htmlPlayer = document.getElementsByTagName('video')[0];

function pausePlayer() {
  htmlPlayer.pause();
}

但是,当单击 slider 按钮时,第二个视频不会暂停。我假设上面的 Javascript 不适用于多个视频?

编辑:此外,如果单击视频元素本身,我想切换播放和暂停功能。我正在使用这段代码,但它会同时播放和停止所有视频。我假设我没有正确循环:

function togglePlayer() {

for(var i = 0; i < htmlPlayer.length; i++){

    if ( htmlPlayer[i].paused || htmlPlayer[i].ended ) {    

        if ( htmlPlayer[i].ended ) { htmlPlayer[i].currentTime = 0; }
        htmlPlayer[i].play();

      }  else { 

      htmlPlayer[i].pause();

    }

}
}

最佳答案

这显然是行不通的,因为您只能获取 getElementsByTagName 返回的数组中的第一个元素。 [0] 部分访问数组中的第一个元素。你想要做的是用一个循环遍历所有这些,就像这样:

var htmlPlayer = document.getElementsByTagName('video');

function pausePlayer() {
  for(var i = 0; i < htmlPlayer.length; i++){
    htmlPlayer[i].pause();
  }
}

编辑

关于你的第二个问题 - 你可以尝试使用这个:

for(var i = 0; i < htmlPlayer.length; i++){
    htmlPlayer[i].onclick = function() {
        if ( this.paused || this.ended ) {    
            if ( this.ended ) { this.currentTime = 0; }
            this.play();
        }  else { 
            this.pause();
        }
    }
}
事件处理程序中的

this 应该引用调用它的元素。

关于javascript - 暂停多个 HTML5 视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3676188/

相关文章:

html - 为什么我的背景图片被放大了?

javascript - Rails jQuery 无页问题

javascript - 在 Dojo 中创建 URL

javascript - 文本区域中 javascript 提及脚本的问题

php - 如何在 PHP 中更改 HTML 标记的值

html - Twitter-Bootstrap 输入内联宽度(名字、中间名和姓氏)

javascript - 如何在 React 组件中调用 minimize() 和 focus()?

java - 在安卓中创建视频

javascript - 当新视频加载 Tauri 和 Svelte 时如何更新视频的当前时间?

c++ - ffmpeg 是在 CPU 还是 GPU 中运行?