setInterval 传值 设参数
来源:互联网 发布:ubuntu 开机脚本 编辑:程序博客网 时间:2024/05/18 17:23
<script type="text/javascript" >window.onload=function(){for(var i=1;i<3;i++){var m ="i="+i;setInterval(function(){test(m);},4000);}}function test(e) {alert(e);}</script>
上面这段代码的运行结果是:
alert 只弹出i=2;
这样的结果给人一种好像只创建了一个setInterval方法或者说是定时器吧.其实如果你自己看还是会发现有时弹出的对话框是连续的两个对话框的,所以这个程序说明for循环中是初始化了两个计时器的.只不过是因为变量的问题所以产生了这种奇异的现象.
原因是setInterval这个计数器是在延迟4秒后才进行调用,而在这期间for循环还是会继续运行的,那么当setInterval执行时i的值已经变成2了;
<script type="text/javascript" >window.onload=function(){for(var i=1;i<3;i++){setInterval(function(){test(i);},4000);}}function test(e) {alert(e);}</script>那么上面这个alert的值却是3;这也就是说i传到setInterval这个计数器中的function参数是3,这个也是因为延迟的问题,当for循环执行完时i的值是3<因为i++了>
那么如何处理这种问题了:
这是一段代码:
<html><head><script type="text/javascript">function intervalTest(){var cks = document.getElementsByName("check");for(var i=0;i<cks.length;i++){if(cks[i].checked == true){mySetInterval(test,(3-i)*1000,i);}}}function test(e) {console.log(e);}function mySetInterval(f,time,param){setInterval(function(){f(param);},time);}</script></head><body><input name="check" type="checkbox" id="1"/>OneCheck<input name="check" type="checkbox" id="2"/>TwoCheck<input name="check" type="checkbox" id="3"/>ThreeCheck<input type="button" onclick="intervalTest()" value="IntervalTest"/></body></html>上面主要是写了一个自己的方法mySetInterval(f,time,param)其中f为回调函数的名称,time为设置的间隔时间,param为f函数的参数值.
这样写的意思就是说当你在循环的时候就直接先调用我的这个方法,然后把参数传给我,然后你在进行for循环,这样就保证了每次传入的值不会在延迟time后而变化.
- setInterval 传值 设参数
- setInterval参数传递
- setInterval 有参数定时执行
- setTimeout setInterval可带参数
- setTimeout/setInterval 第三个参数
- 怎么让setInterval传递参数
- 星际争霸战网架设参数
- Mybatis 参数设 值得 问题
- AS中setInterval()的参数传递注意~
- 如何向 setTimeout 、 setInterval 传递参数
- 使用匿名函数为setInterval传递参数
- setTimeout和setInterval的参数传递方法
- 给定时器settimeout、setInterval调用传递参数
- JS setTimeout、setInterval传递参数总结
- js 定制执行 setInterval 传参数
- 使用匿名函数为setInterval传递参数
- setInterval、setTimeout不能传递带参数
- setInterval函数第一个参数引号问题
- Python网页抓取urllib,urllib2,httplib[3]
- Python urllib2递归抓取某个网站下图片
- sql的Explain type
- final 修饰符 如何使用?
- Linux使用蓝牙
- setInterval 传值 设参数
- 在Linux中使用蓝牙
- 蓝芽:Linux与手机
- 1012 u Calculate e
- Linux基本命令:如何卸载Linux程序
- 一些简单数据结构算法的实现1
- centos6.0下如何卸载linux版google chrome [复制链接]
- DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Su
- android编译之解析main.mk