如何让JS执行整个class?

How to get JS to execute for whole class?

我的页面上有很多视频,我在视频上创建了额外的按钮来加速视频,如果我调用 getElementById,它就可以正常工作。 是否可以对页面上的所有视频使用一个 Javascript?因为它大约是 80+,所以会有很多重复的 javascript 代码,因为我还必须制作按钮以返回速度 1x

HTML 页面块看起来像这样。

....
<div class="LigthBox">
        <a href="#DVDList" class="close" id="clVid1"></a> <a href="javascript:Play15();" class="speed15"> <a href="javascript:Play1();" class="speed1"></a> 
        <video class="Video_LitBox" id="DVD101" controls preload="none" poster="img/DVDThb-101.png"> <source src="res/vid-str.php?play_video=101" type="video/mp4"> </video>  
        <h3 class="DVid_title">101 Intro </h3>
        <p class="DVid_body">101 Intro description .....</p>
    </div>
....

及以下脚本区我有以下内容:

<script type="application/javascript">
  var vid = document.getElementById("DVD101");
  vid.onended = function() { 
    alert("The video has ended");
    fireEvent( document.getElementById('clVid1'), 'click'); 
  } 

  function Play1() { 
    vid.playbackRate = 1;
  }
  function Play15() { 
    vid.playbackRate = 1.5;
  }
</script>

因此可以为页面上的每个视频或任何其他解决方法(如果有)以某种方式定义变量 vid。 btw fireevent 在视频结束后也不起作用,警报显示但不会关闭 window.

您或许应该更改选择器,而不是使用您应该尝试的 getElementById() 方法:

document.querySelectorAll('video')

这将 return 一个包含所有视频实例的数组。然后,您可以通过简单的 for...in or forEach 循环轻松地做任何您想做的事情。

More details 关于 querySelectorAll() 方法。

对于任何对解决方案感兴趣的人。感谢@Aaron_Actu 的建议和一些挖掘,我最终只制作了一个带有参数 (video-speed)

的简短 JS

所以来自 html 的调用对于所有视频来说看起来都一样

....
<a href="javascript:PlaySpeed(15);" class="speed15"></a>
....

页面底部的脚本看起来像

....
  function PlaySpeed(vspd) { 
    var vid = document.querySelectorAll('video');
    for (var i=0; i<vid.length; i++) {     
      vid[i].playbackRate = vspd / 10;
    }
  }
...

我通过 10 倍乘数传递“video-speed”,因此参数是一个整数