Javascript 按钮应在结束后30秒出现 $('#btn3d')。延迟(10000)。显示(0);

Javascript 按钮应在结束后30秒出现 $('#btn3d')。延迟(10000)。显示(0);,javascript,Javascript,由于我计划上载的视频长度不相同,如何使按钮在视频结束后30秒显示而不进行硬编码。您可以使用视频的结束事件 我不知道HTML的结构,但您可以这样做: <input style="display: none;" type="submit" id="btn3d" value="Proceed" class="btn btn-primary btn3d"> </form> <script type="text/javascript" src="//code.j

由于我计划上载的视频长度不相同,如何使按钮在视频结束后30秒显示而不进行硬编码。

您可以使用视频的
结束事件

我不知道HTML的结构,但您可以这样做:

<input style="display: none;" type="submit" id="btn3d" value="Proceed" class="btn btn-primary btn3d">

    </form>


<script type="text/javascript" src="//code.jquery.com/jquery-1.10.2.js"></script>
<script type="text/javascript">
  $('#btn3d').delay(10000).show(0);   
</script>

...
$(文档).ready(函数(){
$(文档)。关于(“时间更新”,“我的视频”,函数(){
const videoElem=$('#myVideo')[0];

如果(videoElem.duration-videoElem.currentTime)视频的运行时间/长度可以通过“视频”元素的“持续时间”属性获得

以下是如何在视频结束前30秒显示按钮的示例:

<video id="myVideo">
   ...
</video>

<input id="btn3d" ...>

<script type="text/javascript">

  $(document).ready(function(){

    $(document).on("timeupdate","#myVideo",function() {

        const videoElem = $('#myVideo')[0];

        if(videoElem.duration - videoElem.currentTime <= 30) {
            $('#btn3d').show();
        }else{
            $('#btn3d').hide();
        }

    });

  })
</script>
var myVideo=document.getElementById(“myVideo”)
//当用户单击“播放”时查找视频持续时间
myVideo.onplay=函数(){
var duration=myVideo.duration
var elapsedTime=myVideo.currentTime
//等待时间=(持续时间-elapsedTime-30)秒
变量waitingTime=(持续时间-elapsedTime-30)*1000

如果(waitingTime您知道如何获取视频的持续时间吗?您使用什么视频播放器?这将在视频结束后30秒显示按钮。@NiettheDarkAbsol您是对的。我根据情况更新了答案如果用户暂停视频,则每次暂停都会再次触发回调。如果只是显示,问题不大取消一个按钮,但如果执行了更复杂的操作,可能会出现问题。是的。观察得很好,Niet。必须使用currentTime属性来计算剩余时间。我刚刚更新了代码示例,使用currentTime属性从总持续时间中扣除经过的时间。
    var myVideo = document.getElementById("myVideo")

    // Find video duration when user clicks 'play'
    myVideo.onplay = function() {

        var duration = myVideo.duration
        var elapsedTime = myVideo.currentTime

        // Waiting time = (duration - elapsedTime - 30) seconds
        var waitingTime = (duration - elapsedTime - 30)*1000


        if (waitingTime <= 0) {
           // Minimum waiting time = 1 second
           waitingTime = 1000
        }

        // Show button after waiting time elapses
        setTimeout(
             function(){ 
                // Code to show button 
             }, 
             waitingTime
        )    
    }