提问者:小点点

HTML5视频结束时如何显示div元素


我一直试图在我网站的主页上做以下操作:全屏播放视频(无控件,无循环,静音,自动播放,存储在本地),当它结束时,视频被隐藏并显示一个div元素。

我习惯于使用HTML和CSS,但不太喜欢使用JavaScript,所以到目前为止,我所做的是放置视频,并使用复选框隐藏/显示元素(如图所示),然后尝试修改它,这样它就可以检测到视频何时结束,但我无法使其工作。

我使用的代码可能是错误的,因为它是为一个复选框准备的,但我也尝试了写在那里的解决方案,似乎问题来自用于检测视频何时结束不工作的函数。


以下是我尝试使其自动化的内容:

null

#menudisplay {
    display: none;
    text-align: center;
    margin-top: 20vh;
  font-family: 'Montserrat';
}

#menudisplay ul {
    list-style-type: none;
}

#menudisplay ul li {
    padding: 110px;
}

.style {
    width: 100vw;
    height: 100vh;
    object-fit: contain;
    position: fixed;
    top: 0;
    left: 0;
    z-index: -1;
    background-color:lightgray;
}
<!DOCTYPE html>
<html>

  <head>
    <title>Website</title>
    <meta http-equiv="Content-Type" content="charset=UTF-8" />
    <link rel="stylesheet" href="./mystyle.css" type="text/css">
    <link href='https://fonts.googleapis.com/css?family=Amatic SC|Montserrat' rel='stylesheet'>
  </head>

  <video autoplay muted class="style">
    <source src="./video.mp4" type="video/mp4">
    The video is not working.
  </video>

  <div id="menudisplay">

    <img class="style" src="./img.jpg">

    <ul>

      <li>
        <a href="./ex1.html">EXEMPLE 1</a>
      </li>

      <li>
        <a href="./ex2.html">EXEMPLE 2</a>
      </li>

    </ul>

  </div>


  <script>
    function myFunction() {
      var video = document.getElementById("video");
      var menudisplay = document.getElementById("menudisplay");

      if (video.ended == true) {
        menudisplay.style.display = "block";
        video.style.display = "none";
      } else {
        menudisplay.style.display = "none";
      }
    }

  </script>

</html>

null

我使用Visual Studio代码,我的web浏览器是Edge。提前谢谢,我真的卡住了!


共1个答案

匿名用户

这应该行得通,

const video = document.querySelector('video');
const menuDisplay = document.querySelector('#menudisplay');
video.addEventListener('ended', (event) => {
    menuDisplay.style.display = 'block';
    //you can also do things with 'event' obj 
});

https://developer.mozilla.org/en-us/docs/web/api/htmlmediaelement/ended_event