function scrollToTop() {
return function(btn, input) {
var flag = false;
var timer; function autoScroll(input) {
var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
if (scrollTop !== 0) {
timer = setInterval(function() {
var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
if (scrollTop === 0) {
clearInterval(timer);
} else { scrollTop -= (document.body.scrollTop) / 8;
document.documentElement.scrollTop = document.body.scrollTop = (scrollTop < 5 ? scrollTop = 0 : scrollTop);
input.value = scrollTop;
flag = true;
}
}, 50);
}
}
window.onscroll = function() {
if (!flag) {
clearInterval(timer);
}
flag = false;
}; btn.onclick = function() {
autoScroll(input);
};
};
}

看了看14年底写的关于页面滚动的代码,居然还是有让我值得思考才能想明白的问题.顿时觉得进步有限.今天我把曾经的代码做了一个封装.避免了全局变量的出现.代码如上.

使用方法:

 window.onload = function() {
var btn = document.getElementsByTagName('button')[0];
var oInput = document.getElementsByTagName('input')[0];
var s = scrollToTop();
s(btn, oInput);
};

时隔一年,window.scroll的更多相关文章

  1. 拉动滚动条追加内容,无限延伸document高度 $(window).scroll(function(){if($(window).scrollTop() + $(window).height() == $(document).height()) { $("body").append(html) } })

    $(document).ready(function() { // endless scrolling $(window).scroll(function() { if($(window).scrol ...

  2. js的onscroll、scrollTop、scrollHeight及window.scroll等方法

    onscroll 解释:当元素的滚动条滚动时触发的事件. onscroll事件貌似任何实体元素都可以绑定,这里的实体元素包括DOM元素.window元素.document元素. 用法即:element ...

  3. $(window).scroll()无法触发问题

    在微信端开发中遇到一个这种问题:明明用的公共文件(代码如下图),其他页面每次都能触发这个滚动条$(window).scroll事件,以显示右下角“回到顶部”这个按钮图标 但是,问题来了,最该需要使用“ ...

  4. window.scroll原生滚动

    window.scroll({ top: , behavior: 'smooth' }) js原生已经支持模拟滚动的效果啦~~~

  5. 置顶,置低实现与window.scroll

    //置顶,置低实现 $('#updown .up').click(function(){$('html,body').animate({scrollTop: '0px'}, 300);}); $('# ...

  6. 让$(window).scroll()监听事件只执行一次

    可以用jQuery中的unbind()来进行事件解绑. $(window).scroll(function() { console.log("滚离顶部" + $(document) ...

  7. 解决jquery animate({scrollTop$pos},500)与$(window).scroll方法冲突的问题

    当点击节点时 先移除$(window).on("scroll")监听事件 在animate动画结束之后再添加上 $('#J_tab li').on('click', functio ...

  8. 【转】window.scroll 浏览器滚动条的参数总结

    如内容超出单元格,则隐藏style="TABLE-LAYOUT: fixed" 让弹出窗口总是在最上面: <body onblur="this.focus();&q ...

  9. baidu时光轴_使用window.scroll实现的

    <!DOCTYPE html> <html> <head> <title></title> <meta charset="u ...

随机推荐

  1. python学习(二):python基本语法

    前言:python基本的语法与其他语言诸如C,JAVA等类似,但个中有些许不同. 一.常规语法 1.变量名与关键字 与其他语言类似,变量名由字母.数字.下划线组成,且必须由字母开头. 变量使用不需要提 ...

  2. JFrame 实现全屏透明背景

    JFrame f=new JFrame(); f.setUndecorated(true);        f.setBackground(new Color(0,0,0,0));        To ...

  3. svn 终端命令

    你可以仅仅删除冲突的文件并且提交,但是svn resolved除了删除冲突文件,还修正了一些记录在工作拷贝管理区域的记录数据,所以我们推荐你使用这个命令. 恢复本地修改  svn revert [-- ...

  4. 慕课网-安卓工程师初养成-2-12 如何在Java中使用注释

    来源:http://www.imooc.com/code/1274 在编写程序时,经常需要添加一些注释,用以描述某段代码的作用. 一般来说,对于一份规范的程序源代码而言,注释应该占到源代码的 1/3 ...

  5. PERT(计划评审技术,Program Evaluation an Review Technique)

    如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 PERT(计划评审技术,Program Evaluation an Review T ...

  6. eclipse删除已经记录的用户名和密码

    1.从windows > preference > Team > SVN #SVN Interface这个位置看看. 2.如果是用的JavaHL, 删除C:\Users\[YourU ...

  7. 实用防火墙(Iptables)脚本分析

    实用防火墙(Iptables)脚本分析 --Redhat,CentOS,Ubuntu等常见Linux发行版中都会预装Iptables防火墙,大多数初学者设置起来由于对这款软件比较陌生,设置起来比较困难 ...

  8. 动态链接库(VC_Win32)

    目录 动态链接库概述相关函数动态链接库编程dumpbin工具 (本章节中例子都是用 VS2005 编译调试的) 动态链接概述 说明 所谓动态链接,就是把一些经常会共用的代码(静态链接的OBJ程序库)制 ...

  9. Visual C++ 开发心得与调试技巧

    自己平时收集的一些技巧与心得,这里分享出来,普及一下知识. 1.如何在Release状态下进行调试 Project->Setting=>ProjectSetting对话框,选择Releas ...

  10. MSSQL Server Transaction 数据库事务回滚的用法

    使用的表结构如下:         Commit TransAction    Else        Rollback TransAction/*    自定义一个变量来判断最后是否发生过错误.*/ ...