有关JS定时器的问题,求大神作答

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有关JS定时器的问题,求大神作答相关的知识,希望对你有一定的参考价值。

for(var i= 0;i<10;i++)
setInterval(function()
console.log(i);
,1000);


为什么会打印出 一堆 10 我想要具体分析思路

参考技术A

var oBtn1=document.getElementById(\'oBtn1\')
var oBtn2=document.getElementById("oBtn2")
var time=null;
oBtn1.onclick=function()
    clearInterval(time); // 这里先清除一下“可能存在”的定时器
    time=setInterval(
        function cj()
            function num(oNum)
                var oNum=Math.floor(Math.random()*(1000+1));
                if(oNum<10)
                    return "0"+"0"+oNum
                
                else if(oNum<100)
                    return "0"+oNum
                
                else
                    return \'\'+oNum;
                
            
            var aNum=String(num())
            var oImg=document.getElementById(\'abc\')
            var aImg=oImg.getElementsByTagName(\'img\')
            for(i=0;i<aImg.length;i++)
                aImg[i].src=\'images/\'+aNum[i]+\'.png\'
            
        
    ,10);

oBtn2.onclick=function ()
    clearInterval(time)

追问

牛头不对马嘴啊,我要分析思路,你这发的是什么啊

求大神!!如何在MFC中设置一个计时器?

我现在需要做一个计时器,是鼠标点击第一下开始计时,点击到第五下结束计时并显示时间。菜鸟一只,拜托各路大神帮帮我~!! 讲详细一点 做出来后我还会加分!!!

定时器,可以帮助开发者或者用户定时完成某项任务。在使用定时器时,我们可以给系统传入一个时间间隔数据,然后系统就会在每个此时间间隔后触发定时处理程序,实现周期性的自动操作。例如,我们可以在数据采集系统中,为定时器设置定时采集时间间隔为1个小时,那么每隔1个小时系统就会采集一次数据,这样就可以在无人操作的情况下准确的进行操作。
MFC定时器
VS2010编程中,我们可以使用MFC的CWnd类提供的成员函数SetTimer实现定时器功能,也可以使用Windows API函数SetTimer来实现。两者使用方法实际上很类似,但也有不同。
CWnd类的SetTimer成员函数只能在CWnd类或其派生类中调用,而API函数SetTimer则没有这个限制,这是一个很重要的区别。因为本教程主要是讲解MFC编程,所以这里就先重点讲解MFC定时器的用法,关于API函数SetTimer的用法鸡啄米会在MFC定时器讲解的基础上进行延伸。
启动定时器就需要使用CWnd类的成员函数SetTimer。CWnd::SetTimer的原型如下:
UINT_PTR SetTimer(
UINT_PTR nIDEvent,
UINT nElapse,
void (CALLBACK* lpfnTimer
)(HWND,
UINT,
UINT_PTR,
DWORD
)
);
参数nIDEvent指定一个非零的定时器ID;参数nElapse指定间隔时间,单位为毫秒;参数lpfnTimer指定一个回调函数的地址,如果该参数为NULL,则WM_TIMER消息被发送到应用程序的消息队列,并被CWnd对象处理。如果此函数成功则返回一个新的定时器的ID,我们可以使用此ID通过KillTimer成员函数来销毁该定时器,如果函数失败则返回0。
通过SetTimer成员函数我们可以看出,处理定时事件可以有两种方式,一种是通过WM_TIMER消息的消息响应函数,一种是通过回调函数。
如果要启动多个定时器就多次调用SetTimer成员函数。另外,在不同的CWnd中可以有ID相同的定时器,并不冲突。
2、为WM_TIMER消息添加消息处理函数,或者定义回调函数。
如果调用CWnd::SetTimer函数时最后一个参数为NULL,则通过WM_TIMER的消息处理函数来处理定时事件。添加WM_TIMER消息的处理函数的方法是,在VS2010工程的Class View类视图中找到要添加定时器的类,点击右键,选择Properties,显示其属性页,然后在属性页工具栏上点击Messages按钮,下面列表就列出了所有消息,找到WM_TIMER消息,添加消息处理函数。
参考技术A 很简单,按钮点击增加一个消息响应函数,这个函数中间设置一个static int型的变量(比如n),注意一定要是static 型。初始设置为0。按钮每点击一下时将这个变量+1,同时判断这个变量n,如果数据等于1,则取当时的时间,保存起来,你可以保存到另一个static变量或类的成员变量或者全局变量中;判断如果n==5,则取当时时间,与之前保存的时间作减法,算出来的时间差就是你要的。
怎么样,够详细了吧追问

谢谢回答! 可是如何使按钮每点击一下 变量加1?
C++只学了不到一年 MFC更是菜鸟级别.....

追答

在资源界面的按钮上双击,会弹出一个增加按钮的响应函数,进去函数里面,就按我上面的做。

本回答被提问者采纳

以上是关于有关JS定时器的问题,求大神作答的主要内容,如果未能解决你的问题,请参考以下文章

关于JS定时刷新的问题,只允许刷新一次,求大侠们来帮帮忙

求大神!!如何在MFC中设置一个计时器?

用js或jquery怎么实现一个数字随时间随机增加?

用css怎么写弹出广告代码,JS也可以,求大神

jquery_12js基础_定时器

如何在mysql中定时清除所有库中指定的表中的数据,而不用每个库都写一遍定时任务,求大神指点!!!