博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在JavaScript中,为什么我们在用定时器控制某一元素移动时,有时会出现元素越走越快的现象...
阅读量:4607 次
发布时间:2019-06-09

本文共 662 字,大约阅读时间需要 2 分钟。

当我们在用定时器时(setinterval),如果我们不清定时器,它会不停的运转下去。有人会问,我只命名了一个定时器的名字,在重新调用这个定时器名字时,这个定时器应该重新开始啊,其实不是这样的。当我们在启动一个定时器时,电脑会为我们开启一个定时器,当我们再次用同一个名字开启定时器时,电脑会再开另外开启一个定时器,与先前开启的定时器无关,我们所谓的定时器的名字,它只是一个变量而已,并不是定时器的名字,它的功能是清定时器用的,也就是通过clearInterval(变量)使定时器停止运行。代码实例如下:

下面是一个用键盘控制元素head走的一个函数

var timer;

function keyContMove(flag){

//在调用定制器时,首先要清定时器,如果没有这条语句的话,每次按键时都会调用此函数从而另开一个定时器,这样就会使head元素越走越快

clearInterval(timer);
timer=setInterval(function(){
if (flag) {

//speedY是y轴方向的速度,speedX是x轴方向上的速度

top+=speedY;
head.style.top=top+'px';
}else {
left+=speedX;
head.style.left=left+'px';
}

},16)

}

切记程序里的timer是定时器的返回值,不是定时器的名字!!!

转载于:https://www.cnblogs.com/yanchao-paul/p/5432771.html

你可能感兴趣的文章
数字通信系统中带宽的概念
查看>>
python_day18 Django表关系
查看>>
ElasticSearch添加mapping
查看>>
使用 IIS 在 Windows 上托管 ASP.NET Core
查看>>
UIStoryboard
查看>>
P3379 【模板】最近公共祖先(LCA)
查看>>
C# sqlserver 2008 连接字符串
查看>>
Bauxite Crushing Plant
查看>>
Hdu Can you find it?(二分答案)
查看>>
树的直径相关
查看>>
[vue]组件的创建(componet)和销毁(keep-alive缓存)和父子dom同步nextTick
查看>>
Spring从入门到精通(四)
查看>>
Qt Creator下载
查看>>
初等矩阵的左乘右乘与行列变换的关系
查看>>
SSM框架CRUD代码生成器
查看>>
RazorHelper.cs
查看>>
20190223 Hadoop生态圈,关于大数据
查看>>
nil Nil NULL NSNull 之间的区别
查看>>
xcode 拷贝新的ios image 进去以后 出现 the divices is locked
查看>>
转义字符
查看>>