倒计时结束后如何显示Vimeo视频DIV而非EXPIRED文本?
倒计时结束显示Vimeo视频实现方案
核心修改逻辑和你猜想的一致,只需替换倒计时结束后的内容赋值逻辑即可,为了避免HTML标签嵌套规范问题,建议同步替换容器标签,完整可运行代码和修改说明如下:
完整修改后代码
<!DOCTYPE HTML> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> #demo { text-align: center; font-size: 60px; margin-top: 0px; } </style> </head> <body> <div id="demo"></div> <script> // 设置倒计时结束时间,可自行修改为目标时间 var countDownDate = new Date("Oct 20, 2021 01:30:25").getTime(); // 每秒更新一次倒计时 var x = setInterval(function() { // 获取当前时间戳 var now = new Date().getTime(); // 计算当前时间和结束时间的差值 var distance = countDownDate - now; // 时间换算:天、时、分、秒 var days = Math.floor(distance / (1000 * 60 * 60 * 24)); var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)); var seconds = Math.floor((distance % (1000 * 60)) / 1000); // 输出倒计时内容 document.getElementById("demo").innerHTML = days + "d " + hours + "h " + minutes + "m " + seconds + "s "; // 倒计时结束后显示Vimeo视频 if (distance < 0) { clearInterval(x); document.getElementById("demo").innerHTML = `<div style="padding:56.25% 0 0 0;position:relative;"><iframe src="https://player.vimeo.com/video/631000875?h=612f03d2b3&badge=0&autopause=0&player_id=0&app_id=58479" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen style="position:absolute;top:0;left:0;width:100%;height:100%;" title="Innovate Healthcare Event"></iframe></div><script src="https://player.vimeo.com/api/player.js"><\/script>`; } }, 1000); </script> </body> </html>
主要修改点
- 容器标签替换:将原代码中用于展示内容的
<p id="demo"></p>改为<div id="demo"></div>,避免p标签内嵌套块级元素导致的渲染异常,同时同步修改了style里的选择器为#demo,保证倒计时样式不变 - 结束逻辑替换:将原倒计时结束分支里输出
EXPIRED的代码,替换为Vimeo嵌入代码的HTML字符串,使用反引号模板字符串包裹无需额外转义,嵌入代码中的</script>添加了反斜杠转义为<\/script>,避免和页面外层script标签提前闭合导致代码报错 - 可自定义配置:你可以自行修改
countDownDate变量的日期值为需要的倒计时结束时间即可测试效果
内容的提问来源于stack exchange,提问作者UVIRE
相关产品推荐
相关产品推荐

