setInterval小问题
2024-10-18 23:33:19
先看下面代码:
for (var i = 0; i < 3; i++) {
setTimeout(function () {
console.log(i)
}, 1000);
}
运行效果是
输出了三次3,而要想输出1,2,3,可改进代码为:
for (var i=0;i<3;i++){
(function (i) {
setTimeout(function () {
console.log(i);
},1000);
})(i);
}
效果:
简要说一下鄙人拙见:
第一个代码出现三次,3,的原因是,for循环时间远小于1000毫秒,所以for循环完了,计时器才运行的,获取的就是三次3.
第二个代码:添了个闭包函数,当i每次累加的时候先执行下计时器,当等于一的时候执行计时器输出1,同理出现2,3
还有就是不要在计时器嵌套for循环
所以还有一下代码:
var i = 0;
var id = setInterval(function () {
i++;
console.log(i);
if (i >= 12) {
clearInterval(id);
}
}, 100);
一个简单例子,个人感觉挺实用的。又不用嵌套for循环。。
补充2016-09-30 11:07:19
通过jQuery each()方法实现
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>each</title>
<script src="../base/jquery-3.1.0.js"></script>
<style>
* {
margin: 0;
padding: 0;
list-style: none;
} .blueBg {
background: blue;
} .whiteBg {
background: white;
}
</style>
</head>
<body>
<ul>
<li>内容一</li>
<li>内容二</li>
<li>内容三</li>
</ul>
</body>
<script>
$(function () {
var timer = null;
$("ul li").each(function (i) {
$(this).hover(function () {
var curLi = $(this);
timer = setTimeout(function () {
curLi.removeClass("whiteBg").addClass("blueBg");
console.log(i);
});
}, function () {
clearTimeout(timer);
$(this).removeClass("blueBg").addClass("whiteBg");
})
})
})
</script>
</html>
最新文章
- Azure Application Gateway (3) 设置URL路由
- PSP记录个人项目耗时情况
- 高流量站点NGINX与PHP-fpm配置优化(译)
- Linux系统下如何配置SSH?如何开启SSH
- 解决iphone横屏时字体变大问题或者内容大小不一样等
- ECHO.js 纯javascript轻量级延迟加载
- 字符串(后缀自动机):Codeforces Round #129 (Div. 1) E.Little Elephant and Strings
- android.os.NetworkOnMainThreadException 异常
- Digital Tutors - Creating an Action Adventure Puzzle in Unity学习笔记
- numpy.random 常用函数详解之简单随机数篇(Simple random data)
- js canvas 转动时钟实例
- 每天一个linux命令:df
- docker 安装jenkins
- jdbc,mybatis,hibernate各自有优缺点以及区别
- python接口自动化测试二十七:加密与解密MD5、base64
- idea+maven+springboot+mybatis+springmvc+shiro
- OpenCV Create Circular Mask 圆形遮罩
- Android自己定义之流式布局
- 使用MSF生成木马_入侵Windows
- codeforces 755F F. PolandBall and Gifts(贪心+多重背包)
热门文章
- CODEVS 3145 汉诺塔游戏 递归
- 一个数如果恰好等于它的因子之和,这个数就称为 ";完数 ";。例如6=1+2+3.编程&#160;&#160;&#160;&#160; 找出1000以内的所有完数。
- C#(数据类型)
- 多线程&;NSObject&;NSThread&;NSOperation&;GCD
- sql语句中的注释符号
- CUBRID学习笔记 32 对net的datatable的支持 cubrid教程
- hdu 2112 (最短路+map)
- 函数对象适配器之ptr_fun的使用示例
- 异步上传图片,光用jquery不行,得用jquery.form.js插件
- Android中序列化对象到XMl 和 XML反序列化为对象