2016-09-04 5 views
0

То, что я пытаюсь сделать, это сделать так, чтобы при прокрутке вверх или вниз она вызывала функцию, которая меняет страницу. У моего тела overflow:hidden.mousewheel и if statements jquery

Я использую JQuery плагин называется https://github.com/jquery/jquery-mousewheel'>mousewheel

Это мой код:

$('#body').on('mousewheel', function(event) { 

    if(event.originalEvent.detail > 0 || event.originalEvent.wheelDelta < 0) { 
    //scroll down 
    if(document.getElementById('pgcount').innerHTML == 'Page 1') scrollDown(2); 
    if(document.getElementById('pgcount').innerHTML == 'Page 2') scrollDown(3); 
    if(document.getElementById('pgcount').innerHTML == 'Page 3') scrollDown(4); 
    if(document.getElementById('pgcount').innerHTML == 'Page 4') scrollDown(5); 
    } else { 
    //scroll up 
    if(document.getElementById('pgcount').innerHTML == 'Page 2') scrollUp(1); 
    if(document.getElementById('pgcount').innerHTML == 'Page 3') scrollUp(2); 
    if(document.getElementById('pgcount').innerHTML == 'Page 4') scrollUp(3); 
    if(document.getElementById('pgcount').innerHTML == 'Page 5') scrollUp(4); 
    } 
    //prevent page fom scrolling 
    return false; 

}); 

По некоторым причинам она работает, когда прокрутка вверх, но когда вы прокручиваете вниз, она переходит на страницу 5 (последняя). Когда я добавил console.log(document.getElementById('pgcount').innerHTML) каждому, если заявление для прокрутки вниз он вошел так:

Page 1 
Page 2 
Page 3 
Page 4 

Я не понимаю, почему это будет работать прокрутка вверх, но не вниз. Я знаю, что вызываемая функция (scrollDown) не проблема, так как она работает при вызове с консоли.

Заранее спасибо

ответ

0

Предполагая, что функция scrollDown() изменяет значение страницы, решение довольно ясно:

if(document.getElementById('pgcount').innerHTML == 'Page 1') scrollDown(2); 
if(document.getElementById('pgcount').innerHTML == 'Page 2') scrollDown(3); 
if(document.getElementById('pgcount').innerHTML == 'Page 3') scrollDown(4); 
if(document.getElementById('pgcount').innerHTML == 'Page 4') scrollDown(5); 

Если вы находитесь на странице 1, код вызывает scrollDown(2), погружая вас на страницу 2. Затем код сразу же проверяет, находится ли вы на стр. 2, и если он прокручивается на страницу 3. Процесс повторяется до тех пор, пока вы не перейдете на страницу 5.

Если вы сохранили трек, все будет намного чище страницы expl вместо того, чтобы смотреть на текст страницы. Однако проще всего сделать с помощью кода, вы должны это добавить else:

if(document.getElementById('pgcount').innerHTML == 'Page 1') scrollDown(2); 
else if(document.getElementById('pgcount').innerHTML == 'Page 2') scrollDown(3); 
else if(document.getElementById('pgcount').innerHTML == 'Page 3') scrollDown(4); 
else if(document.getElementById('pgcount').innerHTML == 'Page 4') scrollDown(5); 
+0

Прокрутите вниз() не изменяет значение страницы. Он вызывается только при прокрутке вниз, поэтому, если вы находитесь на странице 1 и прокрутите страницу, вы попадете на страницу 2, пока не прокрутите ее снова. –

+0

@BenWelch нет, после вызова 'scrollDown (2)', какова следующая строка кода, который выполняется? Это оператор 'if', который проверяет страницу 2. Когда' scrollDown (2) 'возвращается, вы все еще находитесь в коде обработчика мыши. – Pointy

+0

@MuhammadIrfan из-за упорядочения операторов 'if'. Посмотрите на код. В случае прокрутки первый тест 'if' для страницы 2. Если это текущая страница, то страница будет установлена ​​в 1, а последующие 3' if' теста не удастся. – Pointy