果冻上树
2016-03-25 15:06
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);
为什么一直不停闪烁!
用错了,应该这样写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();是执行函数的语句,不能混淆。。。。
所以参数是函数的时候不要顺手加括号
最后,解释一下不停闪烁的原因,只能说是被穆课网站的缓存影响了
楼上正解
不停的闪烁?setInterval(onclock(),1000) 就是每1000ms(也就是一秒)调用一次onclock() 啊,而且是一直下去,你要停下来的话就 var int=setInterval(onclock(),1000); 在 body里面加按钮取消计时器 <input type="button" value="Stop" onclick="clearInterval(int)" /> 或者用另外一个只执行一次的计时器 setTimeout()
定义bian liang mei you yong
var int=setInterval(onclock(),1000);
这个代码错了。
setInterval(onclock(),1000);
这句代码的意思是在一秒后,执行onclock()。前面的那些根本不需要
JavaScript进阶篇
468060 学习 · 21891 问题
相似问题