头像

jlqwer

这让人揪心的代码

《setInterval()》

 2周前  •   WEB, 代码, 笔记  •     •   108  •   0

之前学过一小段时间JS,不过没怎么深入去学习,只能写一点简单的东西,前几天在写一个登陆与注册,注册时邮件验证码发送间隔是120s,同时发送验证码后,想要把获取验证码的按钮变成一个120秒的倒计时,120秒以后变成“重新获取验证码”的按钮,于是就试着使用setTimeout()配合$(“#id”).html(tims+”s后重新获取”)来实现一个倒计时。(setInterval也可以,不过觉得这里不如setTimeout好用一点)
先说一下我刚开始了解到的setTimeout():
主要填写;两个参数,第一个是要用到的函数,第二个是间隔的时间,单位是毫秒;
然后我就写成了 setTimeout(vcodes(time-1),1000)
结果去试验了一下,发现点下发送验证码之后,按钮立刻变成了“重新获取验证码”,怎么这个定时没生效吗?
于是我把$(“#id”).html(tims+”s后重新获取”)的内容在命令台也输出了一遍,这个倒计时确实执行了;
返回来又仔细的看了看setTimeout的说明,原来setTimeout的第一个参数并不是直接填写要执行的函数,而是以字符串的方式填写函数及其参数,直接填写了一个函数,并不是所需要的字符串,setTimeout会立刻执行这个函数而不是等到设定的时间之后,因为setTimeout企图从你填写函数的返回值里得到一个他需要的字符串,可我这里没有返回任何东西,所以这些定时器都会运行,不过每过1秒执行一次空罢了。
最后改了一下:

JavaScripttime=time-1
setTimeout("vcodes("+time+")",1000)

 

已经可以正常运行了

上一篇:
没有了,已经是最新文章啦

 评论


 已有0条评论

    还没有任何评论,你来说两句吧!