2017-07-12 12 views
0

scrollTopの位置よりも大きく異なるものを検出するには、次のようにします。ウィンドウが100pxより大きければbodyにクラスを追加し、150よりも大きければそのクラスを削除し、 。異なるscrollTopの位置を検出する方法

$(window).scroll(function() {  
    var scroll = $(window).scrollTop(); 
    if (scroll >= 100) { 
     $('body').addClass('one'); 
    } 
    else (scroll >= 150) { 
     $('body').addClass('two'); 
     $('body').removeClass('one') 
    } 
}); 

(条件の場合のみ)動作していますが、(else条件)を使用して複数の位置で作業しているわけではありません。

+2

まあである必要があり、150ものGreAです100歳以上... if条件を交換するべきでしょうか? –

+0

JS –

答えて

0

あなたの問題は、基本的な制御フローでスクロールが> = 150であるならば、それはあなたがその第二のブロックに到達することは決してないだろうことを意味する> = 100間違いなくあるので、あなたの第2の条件が冗長である:

if (scroll >= 100) { 
    // execute if scroll is greater or equal to 100 
} else if (scroll >= 150) { 
    // execute if scroll is NOT greater or equal to 100 
    // execute if scroll is greater or equal to 150 
} 

あなたはでしょうそのようにそれらをラウンド交換する必要があります。

if (scroll >= 150) { 
    // execute if scroll is greater or equal to 150 
} else if (scroll >= 100) { 
    // execute if scroll is NOT greater or equal to 150 
    // execute if scroll is greater or equal to 100 
} 

ます。また、ここに構文エラーがあります:else (scroll >= 150) {else if (...

+0

で私があまりよくしていないので、例を示すことができます今は次のようにコードを修正しました...しかし、何も起こっていません。 $ {window} .scroll(function(){ var scroll = $(window).scrollTop(); if(scroll> = 100){ $( 'body')。addClass( 'one');他 } IF(スクロール> = 150){ $( 'ボディ')addClass( '2'); $( 'ボディ')removeClass( '1') }})。 –

+0

最後の行の前に私の答えを読んでください。その 'if..else if'は現在の状態で' else if'に到達しません。 '> = 100'より前に'> = 150'をチェックする必要があります。なぜなら '> = 150'はいつも'> = 100'になるからです。 – Tjkoopa

+0

感謝tjkoopa ...それは働いた! –

関連する問題