-1

関数を作成していて、その上部に if ステートメントを追加しました。ユーザーがスクロールするときに変数の値を変更したい。ユーザーがifステートメントをスクロールして変数値を確認し、ifステートメント内で関数を実行する場合

var usrscrolled = 'notscroll';
    function scrolled() {
        //do by scroll start
        usrscrolled = 'scroll';
    }
    $(window).on('scroll', scrolled);
    if (usrscrolled = 'notscroll') {

}

このコードは機能しますが、 onscroll 変数は変更されず、 if ステートメントはスクロール時に実行されます

4

3 に答える 3

1

=を使用して値を割り当て、比較するために使用する必要があるため==、変更します

if (usrscrolled = 'notscroll') {

if (usrscrolled == 'notscroll') {
于 2013-08-12T05:35:54.460 に答える
0

私はこのコードを追加しました

var delay = 1000;
var timeout = null;
$(window).bind('scroll', function() {
    clearTimeout(timeout);
    timeout = setTimeout(function() {
        usrscrolled = 'notscroll';
    }, delay);
});

ユーザーがスクロールを停止すると、1 秒後に変数値が変更されます。そして、それは私のために働く

于 2013-08-15T05:14:46.700 に答える
0

ifスクロールした後にステートメントが実行されていないことを見逃していると思います:

// Unnecessary if; usrscrolled will always be 'notscroll' here
// This does _not_ run on scroll
if (usrscrolled === 'notscroll') {

}

それが必要な場合は、onハンドラーでラップする必要があります。つまり、次のようにします。

function scrolled() {
    if (usrscrolled === 'notscroll') {
        // Do something before the variable is set to 'scroll'
        // I.e. first time user scrolls
    }
    usrscrolled = 'scroll';
}
$(window).on('scroll', scrolled);
于 2013-08-12T07:35:46.930 に答える