0

だから私はこのJavaScriptを持っています:

$(window).scroll(function () {
    if ($(window).scrollTop() > 0 && !document.contains(document.getElementById('toTop'))) {
        var top = '<div id="toTop" onclick="tTop()"></div>';
        $('body').append(top);
    }
});
function tTop() {
    $('html,body').scrollTop(0);
}
$(window).scroll(function () {
    if (document.contains(document.getElementById('toTop')) && $(window).scrollTop() == 0) {
        $('div').remove('#toTop');
    }
});

スクロールバーが一番上にあるときにページが読み込まれると、問題なく動作します。ただし、スクロールバーが一番下にあるときにページを更新すると、ページは上にスクロールしますが、スクロールは一番下にとどまります。誰でもこれを修正する方法を教えてもらえますか?

4

1 に答える 1

1

スクロールバーが一番下にあるときにページを更新すると、ページは上にスクロールしますが、スクロールは一番下にとどまります

私の読み違いかもしれませんが、ボタンがページの一番下にあるのは気になりませんか?または$(window).scrollTop()、ボタンをクリックした後、ページを更新した後に 0 に設定されていますか?

とにかく、要素が存在するかどうかを確認して、スクロール コールバックを別のメソッドに分離します (例として、div の代わりにボタンを使用しました)。

function scrollCallback() {
    if ($(window).scrollTop() > 0) {
        if ($('body').has('#toTop').length == false) {
            var top = '<input type="button" id="toTop" onclick="tTop();" value="top" />';
            $('body').append(top);
        }
    } 
    else {
        // Removes the button if the scroll is at the top of the page.
        $('body #toTop').remove();
    }
}

次に、ページの読み込み時に scrollCallback を呼び出し、スクロール バックも使用するようにスクロールを設定します。

$(function() {
    // Execute it when you load the page.
    scrollCallback();       
    $(window).scroll(scrollCallback);
});
于 2013-08-09T14:01:54.047 に答える