Ошибка консоли говорит вам, что элемент, к которому вы пытаетесь присоединить функцию прослушивателя, это undefined
.
Ошибка аналогична, независимо от того, используете ли вы elem.onscroll
или elem.addEventListener
, потому что в обоих случаях проблема заключается в селекторе элементов.
Просто введите document.getElementsByClassName('flickity-viewport')[0]
в консоли разработчика и убедитесь, что элемент действительно существует (и не возвращает undefined
).
Чем вы можете изменить свою функцию следующим образом:
function myFunction( event ) {
var winScroll = event.target.scrollLeft;
var height = event.target.scrollWidth - event.target.clientWidth;
var scrolled = (winScroll / height) * 100;
document.getElementById("myBar").style.width = + scrolled + "%";
}
Теперь он использует event.target
вместо повторения getElementsByClassName
. Событие автоматически передается слушателем scroll
функции обратного вызова myFunction
.
Теперь просто прикрепите функцию так, как вам нравится:
var elem = document.getElementsByClassName('flickity-viewport')[0]; // Make sure this doesn't return undefined
elem.onscroll = myFunction;
// or
elem.addEventListener('scroll', myFunction );