@xutegino

Почему метод работает только для последнего элемента?

Почему значение scrolled меняется только для последнего элемента? querySelectorAll возвращает все элементы, верно? Почему работает только для последнего и как исправить?

let obj = document.querySelectorAll('h2');
      obj.forEach((el) => {
        let {top,bottom} = el.getBoundingClientRect();
        let height = document.documentElement.clientHeight;
        if (top < height && bottom > 0) {
          this.scrolled = true
        } else {
          this.scrolled = false
        }
      })


https://codepen.io/kodej/pen/RLNGqe
  • Вопрос задан
  • 298 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
Работает для обоих элементов, просто scrolled - он у вас один. Поэтому он всегда принимает значение, соответствующее последнему элементу - успешно установленное true при обработке первого элемента затирается false'ом, устанавливаемым при обработке второго.

Насколько я понял, должно быть так.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы