JS setTimeout 循环传入参数问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS setTimeout 循环传入参数问题相关的知识,希望对你有一定的参考价值。
for(var i=0;i<4;i++)
setTimeout(function()
console.log(i);
,0);
这样输出是 4444 我应该怎么做输出0123?
我只是把问题简化,真正的问题必须调用 setTimeout
var str = \'\';
for(var i=0;i<4;i++)
str += i+\'\';
console.log(str)
如果你的项目里必须用计时器,最好把关联的代码都贴出来哦~
参考技术A var i = 0;function m()
alert(i);
i++;
setTimeout(m, 10);
setTimeout("m()", 1000);
解释:setTimeout() 只执行 code 一次。如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout()。 参考技术B 方法1:
for(var i=0;i<4;i++)
setTimeout(function(i)
console.log(i);
, 0, i);
方法2(使用let关键字):
for(let i=0;i<4;i++)
setTimeout(function()
console.log(i);
, 0;
参考技术C
for (var i = 0;i<=100;i++)
// 用new的形式会更好吧
(function (tag)
setTimeout(function ()
console.log(tag);//tag就是i。
,1000*i)//相当于有100个定时器,依次在第1、2、3....100秒后执行。
)(i)
两个关键,一个是参数保存下来,函数也好,对象也好,另一个是每隔多少毫秒执行就用 i 乘以多毫秒
js中的setTimeout和setinterval 用法说明
setTimeout("countSecond()", 1000);//countSecond()是函数(方法)
setTimeout 只执行一次函数,需要传递两个参数1是函数名,2是执行的时间 ;如果要循环执行函数,将setTimeout放在被执行函数里面的最后面;
setInterval("countSecond()", 1000);
setInterval 循环执行函数,需要传递两个参数1是函数名,2是执行的时间;
使用:
window.clearTimeout(对象) 可清除已设置的setTimeout对象
window.clearInterval(对象) 可清除已设置的setInterval对象
例:
var ss=setInterval("countSecond()", 1000);
window.clearInterval(ss);
以上是关于JS setTimeout 循环传入参数问题的主要内容,如果未能解决你的问题,请参考以下文章