大家好,我是个刚自学了几天JS的小白,问题很幼稚吧,请指教。
需求:一个每隔一秒更新的时钟,格式如:08:21:29,个位数字前面要加零。
我的思路是先获取当时间的时、分、秒然后转成字符串,再把字符串的下标和数字图片数组的下标对应起来,然后再弄个setInterval每隔一秒执行。
现在的效果如图显示:
这效果乍看之下挺正常,但却不会自动更新图片。后来用alert输出了一下时间字符串,发现定时器正常,但每次输出的时间都是手动刷新的时间,明明放了定时器,为什么时间字符串不会自动更新呢?
代码如下:
<!DOCTYPE html>
<html>
<head>
<title>数码时钟</title>
<style type="text/css">
.float{
float: left;
margin: 0 10px;
font-size: 30px;
}
</style>
<script type="text/javascript">
window.onload=function(){
var imgs=document.getElementsByTagName('img');
var timeSting=null;
var now=new Date();
setInterval(function(){
function add0(h,min,s) {
var n="0";
for (var i = 0; i <3; i++) {
if (arguments[i]<10) {
arguments[i]=n+arguments[i];
}
}
return h+min+s;
}
timeSting=add0(now.getHours(),now.getMinutes(), now.getSeconds());
for (var i = 0; i < 6; i++) {
imgs[i].src="./number/"+timeSting[i]+".gif";
}
},1000);
}
</script>
</head>
<body>
<img class="float" src="">
<img class="float" src="">
<div class="float">:</div>
<img class="float" src="">
<img class="float" src="">
<div class="float">:</div>
<img class="float" src="">
<img class="float" src="">
</body>
</html>
加一句打印语句
发现, 都是同一个值
把
now=new Date();
这句放在定时器里面应该就好了