Логика jquery на ванильный javascript

Есть логика, написанная на jquery. Я немного увлекся этим jquery в последнее время, и подзабыл некоторые моменты js. У меня пока не совсем получается преобразовать свою логику jquery на js. Я представлю код на jquery и на js. Помогите пожалуйста разобраться, что я делаю не так?! Очень надеюсь на вашу помощь.

jquery:

$(window).scroll(function (event) {
  var top = $(window).scrollTop();
  var height_nav = $(".nav").height();
    if (top >= height_nav+22) {
      $(".sidebar").css('top', 0);
    } else {
      $(".sidebar").css('top', height_nav-top+22);
    }  
       
 });

js:

var top = window.scrollTop();
var height_nav = document.getElementsByClassName('nav').scrollHeight;
var sidebar_top = document.getElementsByClassName('sidebar');

if (top >= height_nav+22) {
      sidebar_top.style.top = 0;
    } else {
      sidebar_top.style.top = height_nav-top+22;
    } 

Ответы (1 шт):

Автор решения: Enokin
window.addEventListener('scroll', function(e) {
    let top = window.pageYOffset;
    let height_nav = document.getElementsByClassName('nav')[0].scrollHeight;
    let sidebar_top = document.getElementsByClassName('sidebar')[0];

    if (top >= (height_nav + 22)) {
      sidebar_top.style.top = 0 + 'px' ;
    } else {
      sidebar_top.style.top = (height_nav - (top + 22)) + 'px' ;
    } 
});

Попробуй так

→ Ссылка