【问题标题】:How to condition an if else statement when the button is clicked and video is playing单击按钮并播放视频时如何设置 if else 语句
【发布时间】:2019-04-25 08:23:09
【问题描述】:

我有三个按钮,预告片、电影和电影广告。我想动态播放视频,比如当我点击按钮预告片时,视频预告片必须显示,当我点击电影按钮时,电影视频必须显示,当我点击电影广告时,它必须再次显示。

我的按钮

<button class="btn btn-sm btn-dark" id="trailer">Trailer</button>
<button class="btn btn-sm btn-dark" id="movies">Movies</button>
<button class="btn btn-sm btn-dark" id="movieads">Movie Ads</button>

我现在在视频下看到的是一个简单的伪代码,它总结了我的逻辑,有什么方法可以使这种语法可以实现和工作吗?谢谢。请在下面查看我的代码。

<div class="modal" id="myModal2">
  <div class="modal-dialog modal-lg">
    <div class="modal-content">
      <div class="modal-body">
        <div class="container" id='container'>
         <div id="getdata" style='display: none;'>
            <div class="overlay">
                <br><br><br><br><br>
              <div class="container">
                  <div class="row">
                  <div class="text-center col-md-12">
                      <div class="jumbotron" style="background-color: rgba(42, 44, 45, 0.9); color: #71777f">
                        <h3>Passenger Announcement is Going On.</h3>
                      </div>
                  </div>
                  </div>
              </div>    
            </div>
         </div>
----------------------PSEUDOCODE HERE-----------------------------------
         <?php 

          if (trailer == clicked) {
            echo '<video controls playsinline id="player" width="100%">
                <source src="./inflightapp/storage/app/public/trailer_videos/<?php echo ''.$row2['trailer_video'].''; ?>" type="video/mp4" size="1080">
            </video>';
          }else if(movies == clicked){
            echo '<video controls playsinline id="player" width="100%">
            <source src="./inflightapp/storage/app/public/movie_videos/<?php echo ''.$row2['movies_video'].''; ?>" type="video/mp4" size="1080">
            </video>';
          }else if(moviesAds ==clicked){
            echo '<video controls playsinline id="player" width="100%">
            <source src="./inflightapp/storage/app/public/movie_ads/<?php echo ''.$row2['movies_video'].''; ?>" type="video/mp4" size="1080">
            </video>';
          }

          ?>

        </div>
      </div>
    </div>
  </div>
</div>

【问题讨论】:

  • 如果您需要从服务器发送此 url,那么您需要使用 Ajax,您将在 JavaScript 中添加点击处理程序,从服务器获取 url 并将其注入页面。
  • @jcubic ,没有ajax/还有其他方法吗
  • 您可以隐藏所有视频标签并在点击时在javascript中显示您需要的标签。
  • @jcubic 你能帮我写代码吗?我对javascript不太熟悉:(谢谢..
  • 澄清一下,当您单击按钮时,会出现一个模态,视频将在该模态内播放,对吧?

标签: javascript php html video html5-video


【解决方案1】:

您可以使用这样的东西,将所有视频放入 html 并仅在点击时显示。

HTML,PHP:

<ul class="buttons">
  <li><button target=".videos .trailer">Trailer</button></li>
  <li><button target=".videos .movie">Movie</button></li>
</ul>
<div class="videos">
  <div class="trailer">
     <video controls playsinline id="player" width="100%">
         <source src="./inflightapp/storage/app/public/trailer_videos/<?= $row2['trailer_video'] ?>" type="video/mp4" size="1080">
     </video>
   </div>
   <div class="movie">
       <video controls playsinline id="player" width="100%">
            <source src="./inflightapp/storage/app/public/movie_videos/<?= $row2['movies_video'] ?>" type="video/mp4" size="1080">
       </video>
   </div>
</div>

JS:

var buttons = Array.from(document.querySelectorAll('.buttons [target]'));
var videos = Array.from(document.querySelectorAll('.videos > div'));
buttons.forEach(function(button) {
  button.addEventListener('click', function(e) {
     videos.forEach(function(video) {
        video.style.display = 'none';
     });
     document.querySelector(button.getAttribute('target')).style.display = 'block';
  });
});

css:

.videos > div {
  display: none;
}

【讨论】:

  • 我试试看,谢谢你的回答,并帮助我分析你的答案:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-03
  • 1970-01-01
相关资源
最近更新 更多