简体   繁体   English

使用 javascript 基于按钮单击隐藏/显示视频元素

[英]Hide/Show video element based on button click with javascript

Currently, I have HTML setup like this:目前,我有这样的 HTML 设置:

<video  autoplay="on" id="videoNohighlight" muted src="<?php echo get_site_url(); ?>/wp-content/uploads/2020/02/videonohighlight.mp4"></video>
<video  autoplay="on" id="video_Q1" style="display:none;" muted src="<?php echo get_site_url(); ?>/wp-content/uploads/2020/03/Q1.mp4"></video>
<video  autoplay="on" id="video_Q2" style="display:none;" muted src="<?php echo get_site_url(); ?>/wp-content/uploads/2020/03/Q2.mp4"></video>
<video  autoplay="on" id="video_Q3" style="display:none;" muted src="<?php echo get_site_url(); ?>/wp-content/uploads/2020/03/Q3.mp4"></video>
<video  autoplay="on" id="video_Q4" style="display:none;" muted src="<?php echo get_site_url(); ?>/wp-content/uploads/2020/03/Q4.mp4"></video>

<a href="#case_scroll_to" onClick="reply_click(this.id)" class="qtr_selector btn btn-light" id="_Q1">Q1</a>
<a href="#case_scroll_to" onClick="reply_click(this.id)" class="qtr_selector btn btn-light" id="_Q2">Q2</a>
<a href="#case_scroll_to" onClick="reply_click(this.id)" class="qtr_selector btn btn-light" id="_Q3">Q3</a>
<a href="#case_scroll_to" onClick="reply_click(this.id)" class="qtr_selector btn btn-light" id="_Q4">Q4</a>

and Javascript like this和 Javascript 像这样

function reply_click(clicked_id){
    var video = document.getElementById("video" + clicked_id);
    var videoNohighlight = document.getElementById("videoNohighlight");

    if (video.style.display === "none") {
        video.style.display = "block";
        videoNohighlight.style.display = "none";
    } else {
        video.style.display = "none !important"; 
    }               
}   

JSFiddle link: https://jsfiddle.net/7x82vsah/1/ JSFiddle链接: https://jsfiddle.net/7x82vsah/1/

If some one clicks on all of the buttons, the buttons are acting as toggles rather than, showing one video, then when the next button is clicked, hiding the previous video and showing the new one in its place.如果有人单击所有按钮,则这些按钮将用作切换,而不是显示一个视频,然后当单击下一个按钮时,隐藏上一个视频并在其位置显示新视频。 What needs to be changed to enable this?需要更改哪些内容才能启用此功能?

Thanks谢谢

Currently when a button is pressed you are just showing or hiding that specific video but what needs to be done simultaneously is to hide all other videos when a specific video button is clicked.目前,当按下按钮时,您只是显示或隐藏该特定视频,但需要同时完成的是在单击特定视频按钮时隐藏所有其他视频。 what you can do is add a class to all the video elements and loop through them whenever the button is clicked.您可以做的是向所有视频元素添加 class 并在单击按钮时循环播放它们。

function reply_click(clicked_id){
  var videos = document.getElementsByClassName("video-tabs") // video-tabs is the class you give to all your video elements
  var videoNohighlight = document.getElementById("videoNohighlight");  
  for (var i=0; i<= videos.length -1; i++){
    if (videos[i].id == "video_"+clicked_id) {
      var isVisible = videos[i].style.display
      videos[i].style.display = isVisible === "none" ? "block" : "none";
      videoNohighlight.style.display = isVisible === "none" ? "block" : "none";
    } else {
      videos[i].style.display = "none";
    }
  }

}

You only need to change your function:您只需要更改您的 function:

function reply_click(clicked_id){
  var videos = document.getElementsByTagName('video');

  for (var ctr = 0; ctr < videos.length; ctr++) {
    videos[ctr].style.display= 'none';      
  }

  var video = document.getElementById("video" + clicked_id);  
  video.style.display= 'block';
}   

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM