@yankoyski

Почему так происходит?

Есть код, который определяет, скроллится страница вверх или вниз:

var tempScrollTop, currentScrollTop = 0;
$(window).scroll(function(){
    currentScrollTop = findsTheWindowScrollTop();
    if (tempScrollTop < currentScrollTop ){
        alert("Вниз");
    }
    else if (tempScrollTop > currentScrollTop ) {
        alert("Вверх");
    }
    tempScrollTop = currentScrollTop;
});


Я новичок и у меня возникает несколько вопросов:
1. Почему при написании var перед строкой tempScrollTop = currentScrollTop; код перестаёт работать?
2. Почему при написании строки tempScrollTop = currentScrollTop не в конце, а после строки $(window).scroll(function(){ автоматически срабатывает alert("Вниз")
3. Почему, если строку var tempScrollTop, currentScrollTop = 0; заменить на строки: var tempScrollTop = 0; var currentScrollTop = 0; автоматически срабатывает alert("Вниз")?
4. Почему, если изменить else if на else код перестаёт работать?

Заранее благодарю.
  • Вопрос задан
  • 97 просмотров
Пригласить эксперта
Ответы на вопрос 2
rework
@rework
Помог ответ? В благодарность отметь его решением
1. var - задаёт область видимости переменной, если вы перед строкой tempScrollTop = currentScrollTop; укажите var, то при следующем вызове функции в переменной не сохраняется предыдущего значения.

2. Потому что tempScrollTop нужно запоминать в конце, что бы при следующем вызове функции по событию сравнивать с предыдущим значением, а не с текущим.

3. Во втором варианте переменная инициализируется значением равным 0
Ответ написан
0xD34F
@0xD34F
У вас сейчас есть выбор - между тем, что легко, и тем, что правильно.

Легко - это и дальше вносить в код случайные модификации, пытаясь затем понять их смысл, и не сумев этого сделать (что неудивительно) бежать за помощью.

Правильно - это забыть на ближайшие пару месяцев о существовании jquery и заняться изучением языка. С нуля - потому что ваши знания javascript'а можно смело округлить именно до этого значения.
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы