一、计时器

setInterval ( 函数/名称 , 毫秒数 )表示每经过一定的毫秒后,执行一次相应的函数(重复)

setTimeout ( 函数/名称 , 毫秒数 ) 表示经过一定的毫秒后,只执行一次相应的函数(不重复)

清除计时器:

clearInterval( );

clearTimeout( );

当计时器调用执行完毕时,它将返回一个timer ID,

如果将该ID传递给clearInterval,便可以终止代码的执行。

实例:

页面布局:

<div id="wrap">
<h2>计时开始</h2>
<p id="show"></p>
<button id="btn1">clearInterval( )</button>
<button id="btn2">clearTimeout( )</button>
</div>

JS代码:

 var show=document.getElementById('show');
var btn1=document.getElementById('btn1');
var btn2=document.getElementById('btn2');
var x=0;
var timer1=null;//设置timer1为空对象类型
var timer2=null;
//1.setInterval ( 函数/名称 , 毫秒数 )表示每经过一定的毫秒后,执行一次相应的函数(重复)
timer1=setInterval(function(){//当计时器调用执行完毕时,它将返回一个timerID(timer1),
x++;
show.innerHTML=x;
},500);
btn1.onclick=function(){
clearInterval(timer1);//将该ID传递给clearInterval,便可以终止代码的执行
// 清除计时器:clearInterval( );
}
//2.setTimeout ( 函数/名称 , 毫秒数 )表示经过一定的毫秒后,只执行一次相应的函数(不重复)
timer2=setTimeout(function(){
alert('我是一次性计时器');
},3000)
btn2.onclick=function(){
clearTimeout(timer2);//清除计时器 clearTimeout( );
}

二、scroll系列属性

scrollLeft:设置或获取当前左滚的距离,即左卷的距离;
scrollTop:设置或获取当前上滚的距离,即上卷的距离;
scrollHeight:获取对象可滚动的总高度;
scrollWidth:获取对象可滚动的总宽度;

使用实例:

页面布局:

<div id="box">
<div id="box1">几点见覅当时就发哦哦降低副书记艾佛积分抵沙发几点见覅当时就发哦哦降低副书记艾佛积。。。。。。</div>
</div>
<button id="btn">获取</button>
<p id="totop">返回顶部</p>

JS代码:

    var box=document.getElementById('box');
var box1=document.getElementById('box1');
var btn=document.getElementById('btn');
var show=document.getElementById('show');
var totop=document.getElementById('totop');
btn.onclick=function(){
console.log(box.scrsollLeft);//获取父级(box)左滚的距离,即左卷的距离;
console.log(box.scrollTop);//获取当前父级(box)上滚的距离,即上卷的距离
console.log(box.scrollWidth);//获取对象(box1)可滚动的总宽度
console.log(box.scrollHeight);//获取对象(box1)可滚动的总高度
}

document.body 访问到<body>元素,页面没有DTD,或者说没有指定doctype时,
document.documentElement 访问到<html>根元素,页面有DTD,或者说指定了doctype时,

获取scrollTop的兼容写法
var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;

示例:

 totop.onclick=function(){
var timer1=null;
var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
//document.documentElement访问到<html>根元素(页面没有DTD,或者说没有指定doctype时)
//window.pageYOffset (safari自己的方法)
//document.body 访问到<body>元素,适用(页面没有DTD,或者说没有指定doctype时)
timer1=setInterval(function(){
scrollTop-=20;
if(scrollTop<=0){
/*scrollTop=0;
return false;*/
clearInterval(time);
}
document.documentElement.scrollTop=scrollTop;
document.body.scrollTop=scrollTop;
window.pageYOffset=scrollTop;
},2)
}

三、offset系列属性

offsetLeft:获取对象左侧与定位父级之间的距离
offsetTop:获取对象上侧与定位父级之间的距离
PS:获取对象到父级的距离取决于最近的定位父级
offsetWidth:获取元素自身的宽度(包含边框)
offsetHeight:获取元素自身的高度(包含边框)

四、client系列属性

clientLeft、clientTop:获取元素内容到边框的距离,效果和边框宽度相同,比较少使用
clientWidth:获取元素自身的宽度(不含边框)
clientHeight:获取元素自身的高度(不含边框)

五、图片无缝滚动

页面布局:

 <div id="wrap">
<div id="con">
<div id="box1">
<img src="data:images/qzl1.jpg" alt="">
<img src="data:images/qzl2.jpg" alt="">
<img src="data:images/qzl3.jpg" alt="">
<img src="data:images/qzl4.jpg" alt="">
<img src="data:images/qzl5.jpg" alt="">
</div>
<div id="box2">
</div>
</div>
</div>
<script>
var wrap=document.getElementById('wrap');
var box1=document.getElementById('box1');
var box2=document.getElementById('box2');
// var img1=wrap.getElementsByTagName('img')[0];
var timer=null,x=0;
var maxWidth=box1.offsetWidth;
box2.innerHTML=box1.innerHTML;
function move(){
timer=setInterval(function(){
x+=5;
if(x>=maxWidth){//临界点,一组图片转完时
wrap.scrollLeft=0;
//设这组图片的左卷距离为0,回到初始位置
x=0;
}
wrap.scrollLeft=x;
},20)
}
move();//进入页面自动执行
wrap.onmouseenter=function(){
clearInterval(timer);
}
wrap.onmouseleave=function(){
move();
}
</script>

JavaScript学习笔记5 之 计时器 & scroll、offset、client系列属性 & 图片无缝滚动的更多相关文章

  1. JavaScript学习笔记——DOM_对document对象的内容、属性、样式的操作

    javascript-对文档对象的内容.属性.样式的操作 一.操作内容 1. innerHTML 用来设置或获取对象起始和结束标签内的内容(识别html标签) 2. innerText 用来设置或获取 ...

  2. Java程序猿的JavaScript学习笔记(汇总文件夹)

    最终完结了,历时半个月. 内容包含: JavaScript面向对象特性分析,JavaScript高手必经之路. jQuery源代码级解析. jQuery EasyUI源代码级解析. Java程序猿的J ...

  3. Java程序猿的JavaScript学习笔记(8——jQuery选择器)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  4. Java程序猿JavaScript学习笔记(2——复制和继承财产)

    计划和完成在这个例子中,音符的以下序列: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaSc ...

  5. Java程序猿的JavaScript学习笔记(3——this/call/apply)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  6. Java程序猿JavaScript学习笔记(4——关闭/getter/setter)

    计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...

  7. Java程序猿JavaScript学习笔记(14——扩大jQuery UI)

    计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...

  8. javascript学习笔记(四) Number 数字类型

    数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数  toExponential() 方法 用科学 ...

  9. JavaScript学习笔记之数组(二)

    JavaScript学习笔记之数组(二) 1.['1','2','3'].map(parseInt) 输出什么,为什么? ['1','2','3'].map(parseInt)//[1,NaN,NaN ...

随机推荐

  1. Win7安装MySQL-5.7.16过程

    1.在C盘新建MYSQL文件夹:2.将mysql-5.7.16-winx64拷贝到C:\MYSQL文件夹下,更名为mysql-5.7.16:3.在mysql-5.7.16目录下,建my.ini文件,内 ...

  2. Struts2日期类型转换

    针对日期类java.util.Date进行类型转换,要求客户端使用"yyyy-MM-dd","yyyy/MM/dd"中的任意一种输入,并以"yyyy- ...

  3. 我的MYSQL学习心得(三) 查看字段长度

    我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  4. ASP.NET Aries JSAPI 文档说明:AR.Form、AR.Combobox

    AR.Form 文档 1:对象或属性: 名称 类型 说明 data 属性 编辑页根据主键请求回来的数据 method 属性 用于获取数据的函数指向,默认值Get objName 属性 用于拦截form ...

  5. .Net中的AOP系列之《拦截位置》

    返回<.Net中的AOP>系列学习总目录 本篇目录 位置拦截 .Net中的字段和属性 PostSharp位置拦截 真实案例--懒加载 .Net中的懒加载 使用AOP实现懒加载 如何懒加载字 ...

  6. 【Web动画】CSS3 3D 行星运转 && 浏览器渲染原理

    承接上一篇:[CSS3进阶]酷炫的3D旋转透视 . 最近入坑 Web 动画,所以把自己的学习过程记录一下分享给大家. CSS3 3D 行星运转 demo 页面请戳:Demo.(建议使用Chrome打开 ...

  7. Unity AssetBundle爬坑手记

    这篇文章从AssetBundle的打包,使用,管理以及内存占用各个方面进行了比较全面的分析,对AssetBundle使用过程中的一些坑进行填补指引以及喷!   AssetBundle是Unity推荐的 ...

  8. 超炫的HTML5粒子效果进度条 VS 如何规范而优雅地code

    最近瞎逛的时候发现了一个超炫的粒子进度效果,有多炫呢?请擦亮眼镜!   // _this.ch){ _this.particles.splice(i, 1); } }; this.Particle.p ...

  9. App开发的新趋势

    移动开发这些年,移动开发者人数越来越多,类似的培训公司发展也很快,不过伴随着的是移动应用的需求这几年发展更为旺盛.要开发好的App,纯原生开发肯定是最佳选择.但是这么多年发展,原生开发的难度并没有降低 ...

  10. .NET应用程序与数据库交互的若干问题

    我们知道,在应用程序中与数据库进行交互是一个比较耗时的过程,首先应用程序需要与应用程序建立连接,然后将请求发送到数据库,数据库执行操作,然后将结果集返回.所以在程序中,要尽量晚的与数据库建立连接,并且 ...