КОНТЕКСТ:
- На странице есть несколько видео
- Каждое видео на странице просматривается при наведении мыши (готово)
- При наведении курсора на видео кнопка наложения появляется для каждого видео (сделано)
- При наведении курсора на кнопку наложения, воспроизведение видео продолжает воспроизводиться (или перезапускается) -> не может понять это
I GetElementsByClassName , сохранить в переменную, а затем перебрать все видео на странице и добавить EventListeners с соответствующими play () / pause () функциями - > отлично работает для 'mouseover' видео-превью.
В тот момент, когда я 'mouseover' на кнопке, видео останавливается, и я получаю "Uncaught TypeError: e.target.play не является функцией при HTMLDivElement.videoPlay" ошибка в моя консоль.
Когда я делаю тест на своей консоли, я могу воспроизводить каждое видео, используя соответствующий индекс в следующем:
кнопки [0] .nextElementSibling.play ()
Но по какой-то причине я не могу заставить ее работать в этой функции.
Есть идеи, как заставить это работать?
HTML
<div>
<!-- Video segment -->
<div class="vid-segment">
<a class="vid-btn" href="#">
<i class="fa fa-shopping-cart"></i>
<span>Add to cart</span>
</a>
<video class="video-preview" witdh="352" height="198" muted>
<source src="static/videos/video1.mov" type="video/mp4">
</video>
</div>
<!-- Video segment end -->
<!-- Video segment -->
<div class="vid-segment">
<a class="vid-btn" href="#">
<i class="fa fa-shopping-cart"></i>
<span>Add to cart</span>
</a>
<video class="video-preview" witdh="352" height="198" muted>
<source src="static/videos/video1.mov" type="video/mp4">
</video>
</div>
<!-- Video segment end -->
JavaScript
function videoPlay() {
loop = true;
play()
console.log("Video plays")
}
function videoStop() {
currentTime = 0;
pause()
console.log("Video stops")
}
const videos = document.getElementsByClassName('.vid-segment')
const buttons = document.getElementsByClassName('.vid-btn')
for(var i = 0; i < videos.length; i++) {
videos[i].addEventListener('mouseover', videoPlay);
videos[i].addEventListener('mouseout', videoStop);
buttons[i].addEventListener('mouseover', function() {
buttons[i].nextElementSibling.play()
})
}