$(окно).scrollTop() Счетчик

У меня есть две функции. Первый проверяет, находится ли элемент в поле зрения при прокрутке страницы. Второй предназначен для вычисления верхней части прокрутки, и если первая функция истинна, то есть когда элемент находится в поле зрения, она устанавливает scrollTop этого элемента в 0.

Мое решение сделать это состояло в том, чтобы запустить отдельный счетчик, который активируется только тогда, когда элемент находится в поле зрения, но у меня возникли проблемы с созданием рабочего счетчика. Как и сейчас, значение i застряло на 1. Ниже мой код, любой ввод приветствуется.

var img = $('.banner_img_desktop').find('img');

function isScrolledIntoView(elem) {
  var docViewTop = $(window).scrollTop();
  var docViewBottom = docViewTop + $(window).height();
  var elemTop = $(elem).offset().top;
  var elemBottom = elemTop + $(elem).height();
  return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}

$(window).scroll(function() {
  var scrollTop = $(window).scrollTop();
  var i = 0; // <-- my counter
  if (isScrolledIntoView(img)) {
    i = i + 1;
    var elemScroll = i;
    var imgPos = (elemScroll / 8) + 'px';
    img.css('transform', 'translateY(' + imgPos + ')');
  }
});

Я думаю, это происходит потому, что область действия переменной i является локальной для функции прокрутки. Если вы хотите использовать его как global, объявите его вне функции scroll.

GrafiCode 31.05.2019 10:58

эй, @kontenurban, ты планируешь исправить положение изображения или что-то подобное, когда пользователь прокручивает окно просмотра? если это так, то не делайте никаких счетчиков на основе события SCROLL (это не постоянно и может нанести больше вреда коду), лучше установить собственный класс CSS, когда верхняя функция ИСТИНА!

Kresimir Pendic 31.05.2019 10:59

@KresimirPendic Да, я действительно пытаюсь получить эффект параллакса! Как у меня сейчас, если на странице много контента, изображение внутри контейнера исчезает, потому что к тому времени, когда вы достигаете элемента, значение прокрутки очень велико, отсюда и преобразование: translateY(). Таким образом, моя идея начать считать эти значения только тогда, когда элемент находится в поле зрения!

kontenurban 31.05.2019 11:05

@GrafiCodeStudio сделал свое дело! Спасибо!

kontenurban 31.05.2019 11:46

@kontenurban пожалуйста, ответьте сами на свой вопрос :) stackoverflow.com/help/self-answer

GrafiCode 31.05.2019 11:49
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
148
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

По совету @GrafiCode Studios! Область действия переменной i была локальной для функции scroll, и я хотел использовать ее как глобальную! Решение состояло в том, чтобы объявить его вне функции scroll!

Другие вопросы по теме