【问题标题】:Why won't the scroll bar go up when I use this javascript function?当我使用这个javascript函数时,为什么滚动条不会上去?
【发布时间】:2013-08-09 13:35:36
【问题描述】:

所以我有这个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');
    }
});

如果页面在滚动条位于顶部时加载,它就可以正常工作;但是,当我在滚动条位于底部时刷新页面时,页面仍会向上滚动,但滚动仍停留在底部。谁能告诉我如何解决这个问题?

【问题讨论】:

  • 您意识到每次滚动时,top 都会附加到您的页面...
  • 是的,我在问这个问题几秒钟后就修复了这个问题哈哈哈,我现在就更新代码。
  • 你最终设法让它工作了吗?

标签: javascript jquery html dom window


【解决方案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);
});

【讨论】:

  • 我不确定你答案的后半部分在说什么,但这听起来更像我正在寻找的。但是,我删除按钮没有问题,无论如何我正要更新代码,但我一定会尝试下半部分。谢谢。
  • 第一个代码块添加了一个检查按钮是否存在于网页上。它还使用相同的功能/绑定将其删除。我注意到您绑定了 $(window).scroll( 两次,这可能是问题的一部分。第二个/最后一个代码块在页面加载后运行一次函数,检查滚动位置是否需要执行任何操作(添加或删除按钮),然后将滚动事件绑定到回调(您已经做)。
  • 好吧,我现在可以添加和删除按钮了在底部。
  • 我可以在 IE(10)/Chrome(28)/Firefox(22) 中使用我的代码。您在问题中的代码在 chrome/firefox 中有效(刷新后),但在 IE 中根本不起作用(document.contains 不起作用)。您的 javascript 是否在文档就绪函数中(例如:$(function() {)?
  • 它不在文档准备功能中,您认为会解决它吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-19
  • 1970-01-01
  • 2021-10-30
  • 1970-01-01
  • 2019-08-10
  • 2014-04-19
  • 2011-06-02
相关资源
最近更新 更多