2016-12-07 5 views
0

У меня есть следующие script, который получает все video элементы на данной странице, а затем применяет playing им событие:addEventListener «играет» только один раз.

var video = document.getElementsByTagName("video"); 

for(var i = 0; i < video.length; i++){ 
(function(vid) { 
    vid.addEventListener('playing', function(){ 
     var percentComplete = Math.round((vid.currentTime/vid.duration) * 100); 
     console.log(percentComplete); 
    }); 
}) 
(video[i]); 
} 

Теперь, когда я запускаю страницу и нажмите на видео 1, например, я вижу percentComplete быть зарегистрировался на console log, однако, когда видео 1 заканчивается, и я нажимаю видео 2, ничего не записывается в console, кажется, что этот addEventListener применяется только к первому клику, который можно щелкнуть, может кто-то объяснить, почему и как я могу это разрешить, чтобы он срабатывал каждый раз, когда воспроизводится видео?

+0

Вы, вероятно, должны предоставить нам демонстрационную версию (StackSnippet® или скрипку), воспроизводящую проблему, потому что ваш фактический код должен работать; один из @gyre должен работать тоже * (теперь, когда он/она исправил свою опечатку) *, и вы также можете просто использовать 'this', но, я думаю, никакое альтернативное решение не устранит основную проблему, которая не видна в ваш блок кода. – Kaiido

ответ

0

Попробуйте удалить внешнее закрытие и использовать event.target в вашем слушателе.

var video = document.getElementsByTagName("video"); 

for (var i = 0; i < video.length; i++) { 
    video[i].addEventListener('playing', function (event) { 
     var vid = event.target 
     var progress = Math.round((vid.currentTime/vid.duration) * 100) 
     console.log(progress) 
    }) 
} 

Для тех, кто заинтересован, вот the full list of media events.

+0

это не решает проблему, к сожалению –

+0

Вы пытаетесь запустить прослушиватель событий каждый раз, когда вы нажимаете «играть»? – gyre

+0

Когда я нажимаю на воспроизведение на видео 1, например, он работает, когда видео 1 закончило играть, а затем я нажал кнопку воспроизведения на видео 2, ничего не уволено. –

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

  • Нет связанных вопросов^_^