定时器( setInterval和 setTimeout)
一、定时器setInterval-------常用的,反复循环的
<input type="button" value="停止" id="btn">
<script>
//定时器setInterval(参数1,参数2)
//参数1----->函数
//参数2----->事件----单位毫秒-----1000毫秒=1秒
//执行过程:页面加载完毕后,过了多少时间,执行一次函数的代码,然后又过了多少时间,又执行一次函数的代码..
//返回值是定时器的id
//清理定时器用clearInterval(id)
var timeId=setInterval(function(){
//设置了一个定时器,一秒控制台输出 "哈哈"
console.log("哈哈");
},1000)
document.getElementById("btn").onclick=function(){
//点击按钮,停止定时器,参数是要清理的定时器的id
window.clearInterval(timeId);
};
</script>
二、定时器setTimeout-------一次性的
<input type="button" value="停止" id="btn">
<script>
//定时器setTimeout(参数1,参数2)
//参数1----->函数
//参数2----->事件----单位毫秒-----1000毫秒=1秒
//执行过程:页面加载完毕后,过了多少时间,执行一次函数的代码(只执行一次)
//返回值是定时器的id
//清理定时器用clearTimeout----虽然是一次性的定时器,但是也要清理,不然会一直占内存
var timeId = setTimeout(function () {
//设置了一个定时器,一秒控制台输出 "哈哈"
console.log("哈哈");
}, 1000)
document.getElementById("btn").onclick = function () {
//点击按钮,停止定时器,参数是要清理的定时器的id
window.clearTimeout(timeId);
};
</script>
三、案例
<!-- 例1:摇晃的图片 -->
<input type="button" value="开始" id="btn1">
<input type="button" value="停止" id="btn2">
<div id="dv">
<img src="1.png" alt="">
<img src="2.png" alt="">
</div>
<!-- 设置了一个div里面放了两张图片 -->
<script>
var timeId="";//设置这个的为了后面的清除时间能够访问到这个id
document.getElementById("btn1").onclick=function(){
//设置定时器
timeId=setInterval(function(){
var x=parseInt(Math.random()*100+1);
var y=parseInt(Math.random()*100+1);
document.getElementById("dv").style.marginLeft=x+"px";
document.getElementById("dv").style.marginTop=y+"px";
},100)
};
document.getElementById("btn2").onclick=function(){
//清除定时器
clearInterval(timeId);
};
</script>
<!-- 例2: 闪动的星星 -->
<input type="button" value="开始" id="btn1">
<input type="button" value="停止" id="btn2">
<div id="dv">
<span>☆</span>
</div>
<!-- 1.设置了一个div宽高400,背景黑色和一个span标签里放一个☆
2.特别注意,span是行内元素,如果设置成块元素,需要防止外边距塌陷,div设置overflow: hidden
3.还有一种方法就是用定位做,利用left和top的移动实现效果 -->
<script>
var timeId="";
document.getElementById("btn1").onclick=function(){
//设置定时器
timeId=setInterval(function(){
var x=parseInt(Math.random()*400+1);
var y=parseInt(Math.random()*400+1);
document.getElementById("dv").firstElementChild.style.marginLeft=x+"px";
document.getElementById("dv").firstElementChild.style.marginTop=y+"px";
},10)
};
document.getElementById("btn2").onclick=function(){
//清除定时器
clearInterval(timeId);
};
</script>
<!--例3: div背景渐变 -->
<input type="button" value="开始渐变" id="btn">
<div id="dv" style="width: 300px;height: 300px;background-color: black"></div>
<script>
document.getElementById("btn").onclick=function(){
//默认是10,不设置为1,是小数的bug,还有要写在定时器外面
var opacity=10;
//设置定时器
timeId=setInterval(function(){
//每执行一次定时器,透明度变化一次
opacity--;
//如果透明度小于0了就清除定时器
if(opacity<=0){
clearInterval(timeId);
}
//改变div的透明度
document.getElementById("dv").style.opacity=opacity/10;
},500)
};
</script>
<!-- 例4:协议强制倒计时 -->
<textarea name="" id="tt" cols="30" rows="10">协议</textarea><br>
<input type="button" value="请仔细阅读协议(5)" id="btn" disabled>
<script>
var time=5;
var timeId=setInterval(function(){
time--;
document.getElementById("btn").value="请仔细阅读协议("+time+")";
if(time<=0){
clearInterval(timeId);
document.getElementById("btn").disabled=false;
document.getElementById("btn").value="同意";
}
},1000)
</script>
<!-- 例5:div变宽动画 -->
<input type="button" value="开始" id="btn">
<div id="dv" style="width: 100px;height: 100px;background: red;"></div>
<script>
document.getElementById("btn").onclick=function(){
var width=100;
var timeId=setInterval(function(){
width++;
if(width>=400){
clearInterval(timeId);
}
document.getElementById("dv").style.width=width+"px";
},10)
};
</script>
定时器( setInterval和 setTimeout)的更多相关文章
- js定时器setInterval()与setTimeout()
js定时器setInterval()与setTimeout() 1.setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setT ...
- Vue中使用定时器setInterval和setTimeout
js中定时器有两种,一个是循环执行setInterval,另一个是定时执行setTimeout 一.循环执行(setInterval) 顾名思义,循环执行就是设置一个时间间隔,每过一段时间都会执行一次 ...
- Jquery中使用定时器setInterval和setTimeout
直接在ready中调用其他方法,会提示缺少对象的错误,解决方法如下: 方法1. 函数不在$(function(){....})内,setInterval第一个参数为"showAtuto&qu ...
- setInterval 和 setTimeout 定时器
前端定时器 setInterval 和 setTimeout setInterval 循环执行 循环执行就是设置一个时间间隔,每过一段时间都会执行一次这个方法,直到这个定时器被销毁掉. 用法是setI ...
- javascript中window与document对象、setInterval与setTimeout定时器的用法与区别
一.写在前面 本人前端菜鸟一枚,学习前端不久,学习过程中有很多概念.定义在使用时容易混淆,在此给向我一样刚踏入前端之门的童鞋们归纳一下.今天给大家分享一下js中window与document对象.se ...
- JavaScript SetInterval与setTimeout使用方法详解
setTimeout和setInterval的语法相同.它们都有两个参数,一个是将要执行的代码字符串,还有一个是以毫秒为单位的时间间隔,当过了那个时间段之后就将执行那段代码.不过这两个函数还是有区别的 ...
- JS里设定延时:js中SetInterval与setTimeout用法
js中SetInterval与setTimeout用法 JS里设定延时: 使用SetInterval和设定延时函数setTimeout 很类似.setTimeout 运用在延迟一段时间,再进行某项操 ...
- 关于setInterval和setTImeout中的this指向问题
前些天在练习写一个小例子的时候用到了定时器,发现在setInterval和setTimeout中传入函数时,函数中的this会指向window对象,如下例: var num = 0; function ...
- setInterval 和 setTimeout
setInterval 和 settimeout的区别 setinterval 1.会造成某些间隔会被跳过2.多个定时器之间的执行代码事假间隔比预期的小 而且 当定时器代码添加到任务队列里面没有被执行 ...
随机推荐
- Oracle随笔之用拆分后的列数据关联表查询
-----------------------建表------------------------- create table test(id int, plist varchar2(30)) ; c ...
- react实现提示消息容器,可以动态添加,删除内部子提示消息
import React, { useState, useRef, useEffect } from 'react' import PropTypes from 'prop-types' import ...
- netty--使用注意事项
- 在论坛中出现的比较难的sql问题:16(取一个字段中的数字)
原文:在论坛中出现的比较难的sql问题:16(取一个字段中的数字) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路. 问题:取一个字段中的数字http://bbs.csdn ...
- Computer Vision_33_SIFT:ORB_An efficient alternative to SIFT or SURF——2012
此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...
- Django之小结
常用的函数方法与包的调用 # 登陆视图函数 def login(request): if request.method == 'GET': return render(request,'login.h ...
- 元类编程--__get__ __set__属性描述符
from datetime import date, datetime import numbers class IntField: #数据描述符,实现以下任意一个,都会变为属性描述符 def __g ...
- 打造完美Python环境(pyenv, virtualenv, pip)
写在最前 在使用 Python 进行开发和部署的时候,经常会碰到Python版本或者依赖包或者对应版本不同导致各种意外情况发生. 本文将介绍如何通过 pyenv, virtualenv, pip三个工 ...
- windows 数据备份
xcopy 数据目录 备份目录 /e /c /q /h /r /y at 00:00 /every:M,T,W,Th,F,S,Su d:\批处理文件名
- P1330 封锁阳光大学[搜索+染色]
题目来源:洛谷 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构成的无向图 ...