Uncaught TypeError: Cannot read property 'top' of undefined. Как исправить

Всем привет. Подскажите, пожалуйста, есть JavaScript-кoд.

$("[data-scroll]").on("click", function(Event) {
    Event.preventDefault();
    let ElementId = $(this).data('scroll');
    let elementOffset = $(ElementId).offset().top;

    console.log(elementOffset);
}); 

И в ней выдаёт ошибку: Uncaught TypeError: Cannot read property 'top' of undefined. Как ёё исправить?


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

Автор решения: HamSter

Вы пытаетесь определить положение не самого элемента, а его атрибута data.

Для того, чтобы определить положение самого элемента стоит задать $(this).offset().top;, где $(this) - то на что кликнули.

$("[data-scroll]").on("click", function(Event) {
  event.preventDefault();
  let ElementId = $(this).data('scroll');
  let elementOffset = $(this).offset().top;

  console.log(elementOffset);
});
<script src="https://code.jquery.com/jquery-3.0.0.js"></script>


<a href="#" data-scroll="scroll">
    data-scroll
  </a>

→ Ссылка