barriers / 阅读 / 详情

javascript 关于setInterval() 怎么不无限循环下去问题 求大师解释啊 下面就是我自己写的两段代码

2023-07-12 18:07:07
共3条回复
阿啵呲嘚

也是无限执行的,只不过是你move那里写错了,感觉什么都没变化。

move是一个变量,不是一个语句,你写move;什么都不会发生的。前面的那句var move=odiv.style.left=odiv.offsetLeft+10+"px";只是在input1点击的时候执行了一次。要弄清楚变量和语句的关系啊童鞋。如果写成这样效果和上面的代码就一样了

var move = function() {

odiv.style.left=odiv.offsetLeft+10+"px";

}

timer=setInterval(function(){move();},100);

大鱼炖火锅

就是把其中input1.onclick=function()

{

var move=odiv.style.left=odiv.offsetLeft+10+"px";

setInterval(function(){move();},100);

}

max笔记

语法有误,你的move只是一个变量

相关推荐

JS setInterval暂停和重启

setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。setInterval() 没有暂停这一说,只能清除和开启。<title></title><script src="Scripts/jquery-1.4.1-vsdoc.js" type="text/javascript"></script><script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script><script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script><script type="text/javascript">$(function () {var iCount = setInterval(GetBack, 3000);function GetBack() {alert("aa");$.ajax({type: "POST",url: "WebForm4.aspx/GetString",dataType: "text",contentType: "application/json; charset=utf-8",beforeSend: function (XMLHttpRequest) {},success: function (msg) {alert("ff");},error: function (msg) {alert(msg);}});}$("#cOk").click(function (e) {clearInterval(iCount);});});</script><div><a href="#" id="cOk" >sss</a></div>后台代码------------------[WebMethod]public static string GetString(){return "aa";}
2023-07-12 10:51:221

javascript中setInterval函数是什么意思?

  javascript中的setInterval的函数主要是在制作动画或其他间隔性渲染(操作)效果时,对操作方法按照一定时间间隔进行调用的函数。  用法:  setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。  setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。  setInterval的表达式格式主要有:  setInterval(fnname,time,par1,par2,........parn);  setInterval(obj,fnname,time,par1,par2,......parn);  第一种是最常见的表达语法,其中fnname参数可以是一个匿名函数的引用或者是一个函数名,time是设定的调用faname的时间间隔,单位为毫秒,默认值为10毫秒,par1.......parn为可选参数,是传递给faname方法的参数。  第二种是使用对象方法的语法,faname参数是obj对象的方法,其他参数同第一种语法。
2023-07-12 10:51:311

js 如何清除setinterval

window.clearInterval(time); 就可以啦!
2023-07-12 10:51:425

js计时器中setTimeout和setInterval的区别和使用

setTimeout定时执行,在设定时间后会执行代码的内容,如setTimeout(function(){ console.log("aa")},1000);在1秒后(1000毫秒)控制台打印aasetInterval每隔设定的时间执行一次代码,如setInterval(function(){ console.log("aa")},1000);每1秒(1000毫秒)在控制台打印aa,直到使用clearInterval停止
2023-07-12 10:52:511

setTimeout,setInterval计时器不准的问题

setTimeout、setInterval 属于定时触发器线程属于macrotask,它的回调会受到GUI渲染、事件触发、http请求、等的影响。所以这两个不适合做精准的定时。最好的方法是定时矫正,用new Date(targetDate:Date - new Date )格式化成你需要的时分秒即可。 setInterval的回调函数并不是到了时间立即执行,而是等系统计算资源空闲下来后才会执行。 下一次触发时间是在setInterval回调函数执行完毕后才开始的。 为了js里可以使用相对准确的计时功能,我们可以用setTimeout代替setInterval 每次触发及时修正
2023-07-12 10:53:191

setInterval是什么?

一般有两种用法,一种是setInterval,另一种是setTimeout,都是javascript脚本setInterval()方法是反复每经过指定毫秒值后执行表达式。setTimeout()方法是经过指定毫秒值后只执行一次表达式。
2023-07-12 10:53:271

在javascript中 setInterval()、clearInterval()、clearTimeout()等等常用的函数的含义是什么?

setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。clearInterval() 定义和用法clearInterval() 方法可取消由 setInterval() 设置的 timeout。clearInterval() 方法的参数必须是由 setInterval() 返回的 ID 值。setTimeout() 定义和用法setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。提示:setTimeout() 只执行 code 一次。如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout()。clearTimeout() 定义和用法clearTimeout() 方法可取消由 setTimeout() 方法设置的 timeout。
2023-07-12 10:53:361

javascript可以单独停止setInterval吗?

那你在设置循环的时候,指定一个名称,比如var timer1 = setInterval(function(){}, 222);然后你就可以清除这个指定的clearInterval( timer1 );
2023-07-12 10:53:464

JS setInterval暂停和重启

var timer =function(){timer1 = setInterval(move,5);}timer();tan.addEventListener("mouseover",function(){clearInterval(timer1);},false);tan.addEventListener("mouseout",timer,false);
2023-07-12 10:53:563

settimeout和setinterval的区别

setTimeout与setInterval虽然都是定时器,但是在执行上还是有不一样的。setTimeout是指定的时间后执行一次;setInterval是在每隔指定的时间后执行多次。setTimeout(fn1, t1),fn1的执行时间是大于或等于t1的;setInterval(fn2, t2),fn2的执行会始终尝试在t2时间后执行,如果网络请求较大的话,会出现fn2连续执行的情况。
2023-07-12 10:54:151

setTimeout()和setInterval()方法的区别?

setInterval:The real delay between func calls for setInterval is less than in the code!That"s normal, because the time taken by func"s execution “consumes” a part of the interval.It is possible that func"s execution turns out to be longer than we expected and takes more than 100ms.In this case the engine waits for func to complete, then checks the scheduler and if the time is up, runs it again immediately.In the edge case, if the function always executes longer than delay ms, then the calls will happen without a pause at all.setTimeout:The recursive setTimeout guarantees the fixed delay (here 100ms).That"s because a new call is planned at the end of the previous one.举例:
2023-07-12 10:54:233

js如何把setInterval固定时间改成随机时间,以下是代码?

那就别用计时器了,用延时器。随机数会吧?Math.random()。你用计时器没法改,计时器是每多少秒触发一次。延时器是多长时间后触发一次,可以把延迟器封装成带参数的函数,然后函数里面自调用,参数就是随机的时间。我说的是思路,如果你理解不能我也可以献丑写一下,不过我觉得还是你自己写出来比较有意义。
2023-07-12 10:54:531

FLASH8中的setInterval怎么用?

在播放 SWF 文件时,每隔一定时间就调用函数或对象的方法。您可以在一段时间内使用 setInterval() 重复执行任何函数。在使用 setInterval() 时注意下列提示:确定被调用的函数的范围。 确定设置了间隔 ID(setInterval() 的返回值)的范围。 在开始设置新的间隔之前清除以前设置的间隔。 下文将详细讨论这些提示。确定被调用的函数的范围。 要确定被调用函数的范围,请将可在其中执行 setInterval() 方法的对象(对象范围)作为第一个参数传递,将要执行的方法名称作为第二个参数传递(如第二个签名中所示)。这可以确保所需的方法从传入的对象引用的范围内执行。以这种方式执行方法时,它可以使用 this 关键字引用对象上的成员变量。确定设置了间隔标识符的范围。 要确定设置了间隔标识符 (intervalId) 的范围,您可以将它分配给您传递给 setInterval() 的对象范围上的一个成员变量。这样,被调用的函数就可以在 this.intervalId 找到间隔标识符。清除以前设置的间隔。 要在开始设置新的间隔之前清除以前设置的间隔,通常应先调用 clearInterval(),然后 调用 setInterval()。这可以确保您不会覆盖或以其它方式破坏 intervalId 变量,该变量是对当前运行的间隔的唯一引用。要在调用 setInterval() 之前调用 clearInterval(),启动脚本和被执行的脚本都必须能够访问 intervalId,如示例中所示。注意:当需要脚本停止循环时,请始终确保调用 clearInterval()。可用性:Flash Player 6;ActionScript 1.0参数 functionReference:Function - 对要被调用的函数的引用。interval:Number - 对传入的 functionReference 或 methodName 函数的调用所间隔的时间(以毫秒为单位)。如果 interval 小于 SWF 文件的帧频(例如,每秒 10 帧 [fps] 相当于 100 毫秒的间隔),则尽可能按照接近 interval 的时间间隔值调用间隔函数。在间隔期间执行大量耗费内存的长脚本将导致延迟。如果被调用的函数启动对可视元素的更改,您应使用 updateAfterEvent() 函数来确保屏幕刷新率足够高。如果 interval 大于 SWF 文件的帧频,则间隔函数仅在 interval 已到期并且 播放头已进入下一帧时才被调用;这就尽可能减轻了每次刷新屏幕时所产生的影响。 param:Object [可选] - 向发送给 functionReference 或 methodName 的函数传递的参数。多个参数应该用逗号隔开: param1 , param2 , ..., paramNobjectReference:Object - 一个对象,它包含由 methodName 指定的方法。 methodName:String - 一个方法,它存在于由 objectReference 指定的对象的范围中。返回 Number - 一个整数,它标识间隔(间隔 ID),您可以将其传递给 clearInterval() 以取消间隔。示例 范例 :以下示例以 20 毫秒的间隔跟踪一条消息,直到跟踪达到 10 次,然后清除该间隔。对象范围 this 作为第一个参数传入,方法名称 executeCallback 作为第二个参数传入。这可以确保 executeCallback() 是从调用的脚本的同一范围内执行的。 var intervalId:Number;var count:Number = 0;var maxCount:Number = 10;var duration:Number = 20;function executeCallback():Void {trace("executeCallback intervalId: " + intervalId + " count: " + count);if(count >= maxCount) {clearInterval(intervalId);} count++;}intervalId = setInterval(this, "executeCallback", duration);
2023-07-12 10:55:001

js 中 setInterval的执行次数问题

应该这样子就好了<script type="text/javascript">var timeDao=100;var i=1;function dao(){ divD.innerText=timeDao; if(timeDao==0) { return; sh.close; } timeDao=timeDao-i>0?timeDao-i:0; i=i*2; var sh; sh=setInterval("dao()",1000);}</script><div id="divD" onclick="dao()">sdfa</div>
2023-07-12 10:55:082

js setinterval 中的时间参数为0

55
2023-07-12 10:55:183

js中为什么setinterval不执行

教你个简单的测试方法。把最核心的代码执行下,也就是:setInterval(function(){alert(1)},1000);看下是否执行呢?如果执行那就不是这里的问题,可能解析就报错了。或者是别的东西的问题。
2023-07-12 10:55:272

如何使用定时器settimeout,setInterval执行能传递参数的函数

无论是window.setTimeout还是window.setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必须要带参数,这就需要想方法解决。经网上查询后整理如下:例如对于函数hello(_name),它用于针对用户名显示欢迎信息:var userName="jack";//根据用户名显示欢迎信息function hello(_name){alert("hello,"+_name);}这时,如果企图使用以下语句来使hello函数延迟3秒执行是不可行的:window.setTimeout(hello(userName),3000);这将使hello函数立即执行,并将返回值作为调用句柄传递给setTimeout函数,其结果并不是程序需要的。而使用字符串形式可以达到想要的结果:window.setTimeout("hello(userName)",3000);这是方法(一)这里的字符串是一段JavaScript代码,其中的userName表示的是变量,而且经测试,这个变量要是个全局的,如果是在某函数里面如此调用 setTimeout,而此变量只是个函数内部变量的话,是会报变量不存在的。但这种写法不够直观,而且有些场合必须使用函数名,于是有人想到了如下方法(二):<script language="JavaScript" type="text/javascript"><!--var userName="jack";//根据用户名显示欢迎信息function hello(_name){alert("hello,"+_name);}//创建一个函数,用于返回一个无参数函数function _hello(_name){return function(){hello(_name);}}window.setTimeout(_hello(userName),3000);//--></script>这 里定义了一个函数_hello,用于接收一个参数,并返回一个不带参数的函数,在这个函数内部使用了外部函数的参数,从而对其调用,不需要使用参数。在 window.setTimeout函数中,使用_hello(userName)来返回一个不带参数的函数句柄,从而实现了参数传递的功能。另外也有人通过修改settimeout、setInterval来实现,相比是比较理想的。即下面的方法三:<script language="JavaScript" type="text/javascript"><!--var userName="jack";//根据用户名显示欢迎信息function hello(_name){alert("hello,"+_name);}//*=============================================================//* 功能: 修改 window.setInterval ,使之可以传递参数和对象参数 //* 方法: setInterval (回调函数,时间,参数1,,参数n) 参数可为对象:如数组等//*============================================================= var __sto = setInterval; window.setInterval = function(callback,timeout,param){ var args = Array.prototype.slice.call(arguments,2); var _cb = function(){ callback.apply(null,args); } __sto(_cb,timeout); }window.setInterval(hello,3000,userName);//-->
2023-07-12 10:55:342

setInterval的问题。

有if判断一点当前时间啊。。。。。。var s=new Date().getSeconds();function a(){if(new Date().getSeconds()!=s)alert(s);s=new Date().getSeconds();};setInterval(a,1);//这样可以就了 一秒调用一次 无误差
2023-07-12 10:55:423

js setInterval怎么设置执行次数

settimeout(执行函数,时间)能满足你的要求,setinterval(执行函数,时间)不行。因为settimeout只运行一次而setinterval多次运行,每次timeout后再调用一次自己也就达到了多次运行的效果,并且每次调用的时间间隔可以不一样如vartimer=1000;//这里定义一个全局变量,其它地方可能修改它t=function(){//yourcodehere//dosomethingtimer+=10;//在这修改timer,当然,你在外面修改的话就把这个注释掉settimeout(t,timer);//再次调用}settimeout(t,timer);//全局调用一次。
2023-07-12 10:55:491

如何清除setinterval

var id=setInterval(function(){ },1000);window.clearInterval(id);clearInterval() 方法可清除setintervalclearInterval() 方法的参数必须是由 setInterval() 返回的 ID 值。
2023-07-12 10:56:081

js代码,关于setInterval无法停止的问题!

第一个问题如第一位热心者回答的那样,作用域问题第二个问题,var b声明应该放到函数外面去,不然每循环一次,就重新声明b=0一次,导致b永远不会小于6第三个问题b=b++,意思是右边的b先把自身赋值给左边,然后自加。所以你可以写成b++或者b=b+1;正确实现方法楼上已经实现,楼主可以研究下
2023-07-12 10:56:171

可不可以让setinterval的时间随着方法的执行而变大

不能直接获取到(因为每一次调用setInterval,就会返回一个间隔lID,这个ID数值为全局setInterval的调用次数)。但有一个办法可以间接做到:<script>function setIntval(callback,timer){this.timer=timer;this.run=function(){setInterval(callback,timer);}}var s1=new setIntval(function(){alert(1);},1000);s1.run();var s2=new setIntval(function(){alert(2);},3000);s2.run();alert(s1.timer); //这是第一个setinterval的执行时间</script>
2023-07-12 10:56:241

求,settimeout和setInterval怎么一起用

setTimeout(Code,Timeout); 是从现在算起多少微秒后运行该代码(只运行一次)setInterval(Code,Timeout); 是每隔多少微秒运行一次代码,这个代码会不断的执行的,用上面的clearInterval会清楚这个计时器。Code是一段字符串,里边是js代码,Timeout是时间间隔,单位是微秒.<input name="txtTimer" value="10秒"><SCRIPT LANGUAGE=javascript><!-- waitTime=10000; //10 秒 timer=setInterval("OnTimer()",1000); function OnTimer(){ waitTime=waitTime-1000; if(waitTime==0){ window.close(); } txtTimer.value=waitTime/1000+"秒"; }//--></SCRIPT>第二个例子:<script>window.onload=sett;function sett(){document.body.innerHTML=Math.random();setTimeout("sett()",1000);}</script>
2023-07-12 10:56:311

AS3 setTimeOut,setInterval,Timer 的区别和用法

个人理解:从使用次数的分别来说:setTimeout:一般只是一次使用。setInterval:无限使用。timer:可以限制次数。但是如果有需要,三个类都可以达到彼此的功能,比如说,timer可以设置成一次使用,或者是无限次使用,但是从开发的简洁程度来说,不建议这样写。从继承的角度来说:setimeout和setinerval是不支持继承的,而timer具有良好的扩张性,像在很多游戏中的心跳机制都是用timer的功能来写的。所以在复杂功能的时候一般都是用timer。应该还是有其它的区别,暂时没想到。最重要的是,这三个方法,使用之后都要回收。不然会引发一些乱七八糟的bug,比如说内存溢出等等。
2023-07-12 10:56:391

javascript的setInterval函数用久了占用过多内存,如何释放这些资源??

setInterval函数正当使用是不会占用过多内存的 除非你周期性调用的函数不正当的使用了内存你可以试试这样写会不会卡var counter = 0;function fun () { // something you want to do if (counter >= 150) return; counter++; setTimeout(fun, millisec); }
2023-07-12 10:56:461

js setinterval占资源大不?

理论上占资源不大,但是最好使用setTimeOut这个,你的那个是无限循环不停调用,那么就要杜绝这种情况,你所调用的JS你确认可以在你给定的时间内完成动作,否则第一次不能完成,那么第一百次或者一千次时候,就会直接崩溃。setInterval占用资源不大。
2023-07-12 10:56:531

setinterval怎么清除

一般讲setinterval函数赋值给一个变量,使变量获取setinterval函数的句柄然后使用方法clearInterval(句柄);停止<script type="text/javascript">$(function () {//iCount获取setInterval句柄var iCount = setInterval(GetBack, 3000);function GetBack() {alert("aa"); }//id为cOk绑定点击事件$("#cOk").click(function (e) {//清除setIntervalclearInterval(iCount);});});</script>
2023-07-12 10:57:001

如何几个定时器同时开 setinterval

setTimeout()setTimeout()方法用来指定某个函数或字符串在指定的毫秒数之后执行。它返回一个整数,表示定时器的编号,这个值可以传递给clearTimeout()用于取消这个函数的执行以下代码中,控制台先输出0,大概过1000ms即1s后,输出定时器setTimeout()方法的返回值1var Timer = setTimeout(function(){ console.log(Timer); },1000); console.log(0); 也可以写成字符串参数的形式,由于这种形式会造成javascript引擎两次解析,降低性能,故不建议使用var Timer = setTimeout("console.log(Timer);",1000); console.log(0); 如果省略setTimeout的第二个参数,则该参数默认为0以下代码中,控制台出现0和1,但是0却在前面,后面会解释这个疑问var Timer = setTimeout(function(){ console.log(Timer); }); console.log(0); 实际上,除了前两个参数,setTimeout()方法还允许添加更多的参数,它们将被传入定时器中的函数中以下代码中,控制台大概过1000ms即1s后,输出2,而IE9-浏览器只允许setTimeout有两个参数,不支持更多的参数,会在控制台输出NaNsetTimeout(function(a,b){ console.log(a+b); },1000,1,1); 可以使用IIFE传参来兼容IE9-浏览器的函数传参setTimeout((function(a,b){ return function(){ console.log(a+b); } })(1,1),1000); 或者将函数写在定时器外面,然后函数在定时器中的匿名函数中带参数调用function test(a,b){ console.log(a+b); } setTimeout(function(){ test(1,1); },1000); this指向在this机制系列已经详细介绍过this指向的4种绑定规则,由于定时器中的this存在隐式丢失的情况,且极易出错,因此在这里再次进行说明var a = 0; function foo(){ console.log(this.a); }; var obj = { a : 2, foo:foo } setTimeout(obj.foo,100);//0 //等价于 var a = 0; setTimeout(function foo(){ console.log(this.a); },100);//0 若想获得obj对象中的a属性值,可以将obj.foo函数放置在定时器中的匿名函数中进行隐式绑定var a = 0; function foo(){ console.log(this.a); }; var obj = { a : 2, foo:foo } setTimeout(function(){ obj.foo(); },100);//2 或者也可以使用bind方法将foo()方法的this绑定到obj上var a = 0; function foo(){ console.log(this.a); }; var obj = { a : 2, foo:foo } setTimeout(obj.foo.bind(obj),100);//2 clearTimeout()setTimeout函数返回一个表示计数器编号的整数值,将该整数传入clearTimeout函数,取消对应的定时器//过100ms后,控制台输出setTimeout()方法的返回值1 var Timer = setTimeout(function(){ console.log(Timer); },100); 于是可以利用这个值来取消对应的定时器var Timer = setTimeout(function(){ console.log(Timer); },100); clearTimeout(Timer); 或者直接使用返回值作为参数var Timer = setTimeout(function(){ console.log(Timer); },100); clearTimeout(1); 一般来说,setTimeout返回的整数值是连续的,也就是说,第二个setTimeout方法返回的整数值比第一个的整数值大1//控制台输出1、2、3 var Timer1 = setTimeout(function(){ console.log(Timer1); },100); var Timer2 = setTimeout(function(){ console.log(Timer2); },100); var Timer3 = setTimeout(function(){ console.log(Timer3); },100); setInterval()setInterval的用法与setTimeout完全一致,区别仅仅在于setInterval指定某个任务每隔一段时间就执行一次,也就是无限次的定时执行<button id="btn">0</button> <script> var timer = setInterval(function(){ btn.innerHTML = Number(btn.innerHTML) + 1; },1000); btn.onclick = function(){ clearInterval(timer); btn.innerHTML = 0; } </script> [注意]HTML5标准规定,setTimeout的最短时间间隔是4毫秒;setInterval的最短间隔时间是10毫秒,也就是说,小于10毫秒的时间间隔会被调整到10毫秒大多数电脑显示器的刷新频率是60HZ,大概相当于每秒钟重绘60次。因此,最平滑的动画效的最佳循环间隔是1000ms/60,约等于16.6ms为了节电,对于那些不处于当前窗口的页面,浏览器会将时间间隔扩大到1000毫秒。另外,如果笔记本电脑处于电池供电状态,Chrome和IE 9以上的版本,会将时间间隔切换到系统定时器,大约是16.6毫秒运行机制下面来解释前面部分遗留的疑问,为什么下面代码的控制台结果中,0出现在1的前面呢?setTimeout(function(){ console.log(1); }); console.log(0); 实际上,把setTimeout的第二个参数设置为0s,并不是立即执行函数的意思,只是把函数放入代码队列在下面这个例子中,给一个按钮btn设置了一个事件处理程序。事件处理程序设置了一个250ms后调用的定时器。点击该按钮后,首先将onclick事件处理程序加入队列。该程序执行后才设置定时器,再有250ms后,指定的代码才被添加到队列中等待执行btn.onclick = function(){ setTimeout(function(){ console.log(1); },250); } 如果上面代码中的onclick事件处理程序执行了300ms,那么定时器的代码至少要在定时器设置之后的300ms后才会被执行。队列中所有的代码都要等到JavaScript进程空闲之后才能执行,而不管它们是如何添加到队列中的如图所示,尽管在255ms处添加了定时器代码,但这时候还不能执行,因为onclick事件处理程序仍在运行。定时器代码最早能执行的时机是在300ms处,即onclick事件处理程序结束之后setInterval的问题使用setInterval()的问题在于,定时器代码可能在代码再次被添加到队列之前还没有完成执行,结果导致定时器代码连续运行好几次,而之间没有任何停顿。而javascript引擎对这个问题的解决是:当使用setInterval()时,仅当没有该定时器的任何其他代码实例时,才将定时器代码添加到队列中。这确保了定时器代码加入到队列中的最小时间间隔为指定间隔但是,这样会导致两个问题:1、某些间隔被跳过;2、多个定时器的代码执行之间的间隔可能比预期的小假设,某个onclick事件处理程序使用serInterval()设置了200ms间隔的定时器。如果事件处理程序花了300ms多一点时间完成,同时定时器代码也花了差不多的时间,就会同时出现跳过某间隔的情况例子中的第一个定时器是在205ms处添加到队列中的,但是直到过了300ms处才能执行。当执行这个定时器代码时,在405ms处又给队列添加了另一个副本。在下一个间隔,即605ms处,第一个定时器代码仍在运行,同时在队列中已经有了一个定时器代码的实例。结果是,在这个时间点上的定时器代码不会被添加到队列中迭代setTimeout为了避免setInterval()定时器的问题,可以使用链式setTimeout()调用setTimeout(function fn(){ setTimeout(fn,interval); },interval); 这个模式链式调用了setTimeout(),每次函数执行的时候都会创建一个新的定时器。第二个setTimeout()调用当前执行的函数,并为其设置另外一个定时器。这样做的好处是,在前一个定时器代码执行完之前,不会向队列插入新的定时器代码,确保不会有任何缺失的间隔。而且,它可以保证在下一次定时器代码执行之前,至少要等待指定的间隔,避免了连续的运行使用setInterval()<div id="myDiv" style="height: 100px;width: 100px;background-color: pink;position:absolute;left:0;"></div> <script> myDiv.onclick = function(){ var timer = setInterval(function(){ if(parseInt(myDiv.style.left) > 200){ clearInterval(timer); return false; } myDiv.style.left = parseInt(myDiv.style.left) + 5 + "px"; },16); } </script> 使用链式setTimeout()<div id="myDiv" style="height: 100px;width: 100px;background-color: pink;position:absolute;left:0;"></div> <script> myDiv.onclick = function(){ setTimeout(function fn(){ if(parseInt(myDiv.style.left) <= 200){ setTimeout(fn,16); }else{ return false; } myDiv.style.left = parseInt(myDiv.style.left) + 5 + "px"; },16); } </script> 应用使用定时器来调整事件发生顺序【1】网页开发中,某个事件先发生在子元素,然后冒泡到父元素,即子元素的事件回调函数,会早于父元素的事件回调函数触发。如果,我们先让父元素的事件回调函数先发生,就要用到setTimeout(f, 0)正常情况下,点击div元素,先弹出0,再弹出1<div id="myDiv" style="height: 100px;width: 100px;background-color: pink;"></div> <script> myDiv.onclick = function(){ alert(0); } document.onclick = function(){ alert(1); } </script> 如果进行想让document的onclick事件先发生,即点击div元素,先弹出1,再弹出0。则进行如下设置<div id="myDiv" style="height: 100px;width: 100px;background-color: pink;"></div> <script> myDiv.onclick = function(){ setTimeout(function(){ alert(0); }) } document.onclick = function(){ alert(1); } </script> 【2】用户自定义的回调函数,通常在浏览器的默认动作之前触发。比如,用户在输入框输入文本,keypress事件会在浏览器接收文本之前触发。因此,下面的回调函数是达不到目的<input type="text" id="myInput"> <script> myInput.onkeypress = function(event) { this.value = this.value.toUpperCase(); } </script> 上面代码想在用户输入文本后,立即将字符转为大写。但是实际上,它只能将上一个字符转为大写,因为浏览器此时还没接收到文本,所以this.value取不到最新输入的那个字符只有用setTimeout改写,上面的代码才能发挥作用<input type="text" id="myInput"> <script> myInput.onkeypress = function(event) { setTimeout(function(){ myInput.value = myInput.value.toUpperCase(); }); } </script> 代码到此结束。下篇给大家介绍BOM系列第二篇之定时器requestAnimationFrameBOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)以上所述是小编给大家介绍的BOM系列第一篇之定时器setTimeout和setInterval ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
2023-07-12 10:57:401

setInterval(“run()”,1000);和setInterval(run(),100)

setInterval("run()",1000); 表示每隔1000毫秒调用一次run方法 另一个 是每隔100毫秒调用一次run方法 (1000毫秒等于1秒)
2023-07-12 10:57:592

如何在一个页面使多个setInterval函数正常运行

function a(){setIntervale("函数1",1000);}function b(){setIntervale("函数2",1000);}function c(){setIntervale("函数3",1000);}a();b();c();
2023-07-12 10:58:091

setInterval, setTimeout 时间设置无效

setTimeout(function(){Talert(i)},5000)或setTimeout("Talert(i)",5000);要这样写
2023-07-12 10:58:341

可不可以获取到setinterval的执行时间

etInterval()自动执行,一般写的话是这样的: var auto=setInterval(function(){ var i=0; i++; if(i==200){ clearInterval(auto); } },20) setInterval(要执行函数名,毫秒数); 一般在第一个是写一个匿名函数
2023-07-12 10:58:412

js 如何清除setinterval

1、定义一个函数,用于自增打印。2、使用setInterval()调用并执行函数。3、保存文件,并观察setInterval()的执行效果。4、定义一个变量,接收setIntreval()返回一个标识符。5、使用clearInterval()在指定条件时,终止setInterval()。6、保存文件,查看执行效果。
2023-07-12 10:58:571

请问我设置的“setInterval”间隔时间为什么没反应?

“play()" 这个是字符串,肯定不会运行的。你修改成play,就可以了。
2023-07-12 10:59:392

setTimeout和setInterval的返回值是什么类型的,它有什么意义

JavaScript中setTimeout和setInterval的返回值类型和意义说明:1、setTimeout :暂停指定的毫秒数后执行指定的代码,返回值是id标识,这个id的意义就是通过clearTimeout来清理暂停执行函数。setTimeout函数的ID标识,每次调用setTimeout函数都会产生一个唯一的ID,可以通过clearTimeout函数(此函数的参数接收一个setTimeout返回的ID)暂停setTimeout函数还未执行的代码2、setTimeout :按照指定的周期(以毫秒计)来调用函数或计算表达式。setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。
2023-07-12 10:59:472

JS中SetTimeOut和SetInterval方法的区别?

setTimeout("obj.showMsg()",1000); } } var text1=new text; text1... setInterval("msg()",1000);//这里该怎么写? } } var text1=new ...
2023-07-12 10:59:542

setinterval读法

你可以通过英语翻译软件进行听读会更清晰。setInterval是一个实现定时调用的函数,可按照指定的周期(以毫秒计)来调用函数或计算表达式。setInterval方法会不停地调用函数,直到 clearInterval被调用或窗口被关闭。由setInterval返回的ID值可用作clearInterval方法的参数。返回的值setInterval函数的ID标识,每次调用setInterval函数都会产生一个唯一的ID,可以传递给另一系统从而取消对code的周期性执行;setInterval动作的作用是在播放动画的时,每隔一定时间就调用函数,方法或对象。可以使用本动作更新来自数据库的变量或更新时间显示。第一种格式是标准动作面板中setInterval函数的默认语法,第二种格式是在专家模式动作中使用的方法。其中的参数function是一个函数名或者一个对匿名函数的引用。object参数指定从Object对象派生的对象。methodName制定object参数中要调用的方法。interval制定对function或methodName调用两次之间的时间,单位是毫秒。后面的arg1等是可选的参数,用于制定传递给function或是methodName的参数。
2023-07-12 11:00:141

JS setInterval暂停和重启

setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。setInterval() 没有暂停这一说,只能清除和开启。<title></title><script src="Scripts/jquery-1.4.1-vsdoc.js" type="text/javascript"></script><script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script><script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script><script type="text/javascript">$(function () {var iCount = setInterval(GetBack, 3000);function GetBack() {alert("aa");$.ajax({type: "POST",url: "WebForm4.aspx/GetString",dataType: "text",contentType: "application/json; charset=utf-8",beforeSend: function (XMLHttpRequest) {},success: function (msg) {alert("ff");},error: function (msg) {alert(msg);}});}$("#cOk").click(function (e) {clearInterval(iCount);});});</script><div><a href="#" id="cOk" >sss</a></div>后台代码------------------[WebMethod]public static string GetString(){return "aa";}
2023-07-12 11:00:211

如何终止setinterval

可以单独停止一个setInterval的,setInterval返回一个唯一的数字编号的timer用下面方法:var timer1 = setInterval("yourFunction1",时间);var timer2 = setInterval("yourFunction2",时间);取消其中一个setIntervalclearInterval(timer1);//取消第一个
2023-07-12 11:00:281

如何使用定时器settimeout,setInterval执行能传递参数的函数

  无论是window.setTimeout还是window.setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必须要带参数,这就需要想方法解决。经网上查询后整理如下:  例如对于函数hello(_name),它用于针对用户名显示欢  迎信息:  var userName="jack";  //根据用户名显示欢迎信息  function hello(_name){  alert("hello,"+_name);  }  这时,如果企图使用以下语句来使hello函数延迟3秒执行是不可行的:  window.setTimeout(hello(userName),3000);  这将使hello函数立即执行,并将返回值作为调用句柄传递给setTimeout函数,其结果并不是程序需要的。而使用字符串形式可以达到想要的结果:  window.setTimeout("hello(userName)",3000);这是方法(一)  这里的字符串是一段JavaScript代码,其中的userName表示的是变量。但这种写法不够直观,而且有些场合必须使用函数名,于是有人想到了如下  方法(二):  <script language="JavaScript" type="text/javascript">  <!--  var userName="jack";  //根据用户名显示欢迎信息  function hello(_name){  alert("hello,"+_name);  }  //创建一个函数,用于返回一个无参数函数  function _hello(_name){  return function(){  hello(_name);  }  }  window.setTimeout(_hello(userName),3000);  //-->  </script>  这里定义了一个函数_hello,用于接收一个参数,并返回一个不带参数的函数,在这个函数内部使用了外部函数的参数,从而对其调用,不需要使用参数。在 window.setTimeout函数中,使用_hello(userName)来返回一个不带参数的函数句柄,从而实现了参数传递的功能。  另外也有人通过修改settimeout、setInterval来实现。即下面的  方法三:  <script language="JavaScript" type="text/javascript">  <!--  var userName="jack";  //根据用户名显示欢迎信息  function hello(_name){  alert("hello,"+_name);  }//*=============================================================  //* 功能: 修改 window.setInterval ,使之可以传递参数和对象参数  //* 方法: setInterval (回调函数,时间,参数1,,参数n) 参数可为对象:如数组等  //*=============================================================  var __sto = setInterval;  window.setInterval = function(callback,timeout,param){  var args = Array.prototype.slice.call(arguments,2);  var _cb = function(){  callback.apply(null,args);  }  __sto(_cb,timeout);  }  window.setInterval(hello,3000,userName);  //-->
2023-07-12 11:00:352

js中为什么“setinterval”不执行?

因为你把setInterval()写在window.onload函数里了,而window.onload只会执行一次,所以它里面的函数,也只会执行一次。提示两点:1、setInterval尽量使用匿名方法。2、这种现实当前时间的,一般用半秒执行一次,这样能避免打开网页不在整秒的问题。
2023-07-12 11:00:421

怎么停止setinterval

可以单独停止一个setInterval的,setInterval返回一个唯一的数字编号的timer用下面方法:var timer1 = setInterval("yourFunction1",时间);var timer2 = setInterval("yourFunction2",时间);取消其中一个setIntervalclearInterval(timer1);//取消第一个
2023-07-12 11:00:481

如何使用定时器settimeout,setInterval执行能传递参数的函数

<script language="JavaScript" type="text/javascript"><!--var userName="jack";//根据用户名显示欢迎信息function hello(_name){alert("hello,"+_name);}//*=============================================================//* 功能: 修改 window.setInterval ,使之可以传递参数和对象参数 //* 方法: setInterval (回调函数,时间,参数1,,参数n) 参数可为对象:如数组等//*============================================================= var __sto = setInterval; window.setInterval = function(callback,timeout,param){var args = Array.prototype.slice.call(arguments,2);var _cb = function(){callback.apply(null,args);}__sto(_cb,timeout); }window.setInterval(hello,3000,userName);//-->
2023-07-12 11:01:032

WPS js宏为什么不能用setInterval() ?

因为你把setInterval()写在window.onload函数里了,而window.onload只会执行一次,所以它里面的函数,也只会执行一次。提示两点:1、setInterval尽量使用匿名方法。2、这种现实当前时间的,一般用半秒执行一次,这样能避免打开网页不在整秒的问题。
2023-07-12 11:01:131

js setInterval怎么设置执行次数

1、你如是想刷新整个页面。chrome自己有插件,Auto Refresh2、如果你是想代码里面控制<script> $(function(){ getData(); setInterval(function(){ getData(); }, 3000); }); function getData(){ alert("go ,let us go") };</script>3、循环次数的<script>$(function(){var count=0getData();setInterval(function(){getData(100);}, 3000);});function getData(var sum){if(count>=sum){return false;}alert("go ,let us go")count=count+1;};
2023-07-12 11:01:201

怎么停止setinterval

可以单独停止一个setInterval的,setInterval返回一个唯一的数字编号的timer用下面方法:var timer1 = setInterval("yourFunction1",时间);var timer2 = setInterval("yourFunction2",时间);取消其中一个setIntervalclearInterval(timer1);//取消第一个
2023-07-12 11:01:391

js setinterval 中的时间参数问题

你的具体目的是什么?最好说清楚setInterval(function(){var time2=function(){...}setTimeout(function(){...},time2);},1);也许这个结构是你想要的?
2023-07-12 11:01:462

setinterval怎么清除

var id=setInterval(function(){ },1000);window.clearInterval(id);clearInterval() 方法可清除setintervalclearInterval() 方法的参数必须是由 setInterval() 返回的 ID 值。
2023-07-12 11:01:531

jquery 清除setInterval

if(msg=="222"){window.timer=setInterval(changeTime,1000); return false; }
2023-07-12 11:02:023

在jquery,怎样不断执行某个函数

这个也是一样的啊function myanimate(){ $("#id").animate({left:"-=10px"},1000);} setinterval(myanimate,1000)可以了
2023-07-12 11:02:112