2017-01-28 2 views
1

Я пытаюсь запустить и остановить два видео с двумя отдельными кнопками. Я просто скопировал код и переименовал переменные, но один фрагмент кода работает, а другой нет. Я получаю сообщение об ошибке 'TypeError: video2.pause не является функцией в HTMLButtonElement.c'. Оба видео и кнопки помещаются соответственно в модалы. Почему я получаю эту странную ошибку, особенно когда работает тот же самый код?Javascript 'x не является функцией'

Javascript:

var video = document.getElementById("video.mp4"); 
    var playButton = document.getElementById("play-pause"); 

    var video2 = document.getElementById("video2.mp4"); 
    var play = document.getElementById("play-pause2"); 

    playButton.addEventListener("click", function a() { 
     if (video.paused == true) { 
      video.play(); 
      playButton.innerHTML = "Pause"; 
     } else { 
      video.pause(); 
      playButton.innerHTML = "Play"; 
     } 
     }); 

    play.addEventListener("click", function c() { 
     if (video2.paused == true) { 
      video2.play(); 
      play.innerHTML = "Pause"; 
     } else { 
      video2.pause(); 
      play.innerHTML = "Play"; 
     } 
     }); 

HTML:

<video width="900px" height="600px" id="Digital_Poster.mp4" /> 
     <source src="assets/video.mp4" type="video/mp4" id="video.mp4"/> 
     Sorry, this browser does not support the 'video' tag. 
    </video> 
    <div id="video-controls"> 
     <button type="button" id="play-pause">Play</button> 
    </div> 

    <video width="900px" height="600px"> 
     <source src="assets/video2.mp4" type="video/mp4" id="video2.mp4"/> 
     Sorry, this browser does not support the 'video' tag. 
    </video> 
    <div id="video-controls"> 
     <button type="button" id="play-pause2">Play</button> 
    </div> 
+0

Где вы являетесь видео-элементами? Я не вижу их в вашем коде ... – Frxstrem

+0

Ну, вы не показываете ни одного элемента с идентификатором '" video2.mp4 "', так что есть ... –

+0

Также на JavaScript у вас есть две кнопки: 'play- пауза' и 'play-pause2', в то время как в вашем HTML они называются' play' и 'play-pause' ... – Frxstrem

ответ

1

Вы должны вызвать .pause на <video> элементов, но id устанавливается на <source> из них. Перемещение его в <video> теги должны заставить его работать:

<video width="900px" height="600px" id="video.mp4"> 
     <source src="assets/video.mp4" type="video/mp4" /> 
     Sorry, this browser does not support the 'video' tag. 
    </video> 
    <div id="video-controls"> 
     <button type="button" id="play-pause">Play</button> 
    </div> 

    <video width="900px" height="600px" id="video2.mp4"> 
     <source src="assets/video2.mp4" type="video/mp4" /> 
     Sorry, this browser does not support the 'video' tag. 
    </video> 
    <div id="video-controls"> 
     <button type="button" id="play-pause2">Play</button> 
    </div> 

Кстати, я исправил /> к > в первой строке. Кроме того, объявление двух элементов с идентификатором, установленным на video-controls, является незаконным, рассмотрите возможность использования HTML classes (спасибо @ zer00ne за указание).

+0

Идентификаторы уникальны, вы должны обратить внимание на свою работу, прежде чем критиковать других. – zer00ne

+0

Что это значит? Два идентификатора отличаются друг от друга, этот код работает [(jsfiddle)] (https://jsfiddle.net/1cvxyeuv) –

+0

@ zer00ne Oh! Я понимаю, вы говорили о повторении идентификатора 'video-controls' ... Это не было причиной проблемы, но я добавил примечание для OP, чтобы исправить это. Благодаря! –

Смежные вопросы