我做了一个简单的JS练习,里面添加了一个定时器,但是定时器没有起作用,求大神解答啊!!

我做了一个简单的JS练习,里面添加了一个定时器,但是定时器没有起作用,求大神解答啊!!,第1张

在body的onload事件中加入

<body onload="setTimeout('chk()',30000);">

后面的数字代表时间,30000代表30秒

我告诉你我的思想吧:

你在触发事件的时候写一个定时器,定时器设置一秒后执行,如果再次触发时定时器还没执行则关闭清空此定时器再执行一次这个定时器。 如你输入1的时候触发定时器,你输入2的时候是在输入1的后小于1秒钟,则输入2时触发事件为关闭清空上一个定时器,再开一次, 输入3时同理, 如后面没跟输入触发时间则执行3时触发的定时器。

浏览器调试下,显示44行Cannot read property 'style' of undefined,其中的this指向的是window对象

修改为:

aLi[i]onmouseout=function()

{

clearTimeout(timer)

var _this=this; //更改的地方

timer=setTimeout(function()

{

aDiv[_thisindex]styledisplay='none';//更改的地方

timer=null

},1000)

}

setTimeout是在上一个回调函数执行结束后,等指定的delay秒后再执行,setInterval是上一个回调函数开始执行后(不管有没有执行完)就立即等delay秒后执行

然而

我们对JavaScript定时器存在一个误解,JavaScript其实是运行在单线程的环境中的,这就意味着定时器仅仅是计划代码在未来的某个时间执行,而具体执行时机是不能保证的,因为页面的生命周期中,不同时间可能有其他代码在控制JavaScript进程。在页面下载完成后代码的运行、事件处理程序、Ajax回调函数都是使用同样的线程,实际上浏览器负责进行排序,指派某段程序在某个时间点运行的优先级。

我们可以可以把JavaScript想象成在时间线上运行。当页面载入的时候首先执行的是页面生命周期后面要用的方法和变量声明和数据处理,在这之后JavaScript进程将等待更多代码执行。当进程空闲的时候,下一段代码会被触发

除了主JavaScript进程外,还需要一个在进程下一次空闲时执行的代码队列。随着页面生命周期推移,代码会按照执行顺序添加入队列,例如当按钮被按下的时候他的事件处理程序会被添加到队列中,并在下一个可能时间内执行。

var btn = documentcreateElement('button'),

    count = 10;

btninnerHTML = count;

documentbodyappendChild(btn);

(function countdown() {

  if(count === 0) {

    btninnerHTML = '停止';

  } else {

    setTimeout(function() {

      count -= 1;

      btninnerHTML = count;

      countdown();

    },1000);

  }

})();

把定时器的第一个参数(这是一个函数)定义在外面,在调用定时器时先执行一遍函数就可以了。比如说

var func(){};

func();

var timer = setInterval(func, 820);

以上就是关于js 定时器 AJAX全部的内容,包括:js 定时器 AJAX、js给input绑定一个延时1秒的按键事件、我做了一个简单的JS练习,里面添加了一个定时器,但是定时器没有起作用,求大神解答啊!!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/8827468.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-22
下一篇2023-04-22

发表评论

登录后才能评论

评论列表(0条)

    保存