У меня есть две функции. Первый проверяет, находится ли элемент в поле зрения при прокрутке страницы. Второй предназначен для вычисления верхней части прокрутки, и если первая функция истинна, то есть когда элемент находится в поле зрения, она устанавливает 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 + ')');
}
});
эй, @kontenurban, ты планируешь исправить положение изображения или что-то подобное, когда пользователь прокручивает окно просмотра? если это так, то не делайте никаких счетчиков на основе события SCROLL (это не постоянно и может нанести больше вреда коду), лучше установить собственный класс CSS, когда верхняя функция ИСТИНА!
@KresimirPendic Да, я действительно пытаюсь получить эффект параллакса! Как у меня сейчас, если на странице много контента, изображение внутри контейнера исчезает, потому что к тому времени, когда вы достигаете элемента, значение прокрутки очень велико, отсюда и преобразование: translateY(). Таким образом, моя идея начать считать эти значения только тогда, когда элемент находится в поле зрения!
@GrafiCodeStudio сделал свое дело! Спасибо!
@kontenurban пожалуйста, ответьте сами на свой вопрос :) stackoverflow.com/help/self-answer



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


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