为了账号安全,请及时绑定邮箱和手机立即绑定

计时器问题

 var attime;

  function onclock(){

    var time=new Date();          

    attime=time.getHours()+"时"+time.getMinutes()+"分"+time.getSeconds()+"秒" ;

    document.getElementById("clock").value = attime;

  }

   var int=setInterval(onclock(),1000);

为什么一直不停闪烁!

正在回答

5 回答

用错了,应该这样写setInterval(onclock,1000);

不能这样写:setInterval(onclock(),1000);这样写根本就没把onclock函数传给setInterval,而是执行了一遍onclock,将执行的结果传给setInterval,

举个栗子:

var attime;

        function abc() {

            return function onclock() {

                var time = new Date();

                attime = time.getHours() + "时" + time.getMinutes() + "分" + time.getSeconds() + "秒";

                document.getElementById("clock").value = attime;

            }

        }

        var int = setInterval(abc(), 1000);

从结果可看出是先执行bac(),得到返回值onclock,然后在执行setInterval.........

onclock是函数本身,onclock();是执行函数的语句,不能混淆。。。。

所以参数是函数的时候不要顺手加括号

最后,解释一下不停闪烁的原因,只能说是被穆课网站的缓存影响了



0 回复 有任何疑惑可以回复我~

楼上正解

0 回复 有任何疑惑可以回复我~

不停的闪烁?setInterval(onclock(),1000) 就是每1000ms(也就是一秒)调用一次onclock() 啊,而且是一直下去,你要停下来的话就 var int=setInterval(onclock(),1000); 在 body里面加按钮取消计时器 <input type="button" value="Stop" onclick="clearInterval(int)"  /> 或者用另外一个只执行一次的计时器 setTimeout()

0 回复 有任何疑惑可以回复我~

定义bian liang mei you yong

0 回复 有任何疑惑可以回复我~

var int=setInterval(onclock(),1000);

这个代码错了。

setInterval(onclock(),1000);

这句代码的意思是在一秒后,执行onclock()。前面的那些根本不需要

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468189    人
  • 解答问题       21891    个

本课程从如何插入JS代码开始,带您进入网页动态交互世界

进入课程

计时器问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信