注册 登录
编程论坛 JavaScript论坛

[求助] JS实现倒记时的代码

afeifei 发布于 2007-06-25 16:12, 1247 次点击
我是刚刚学习JS的初学者,教程还没有学完,不知道动态倒记时的代码该如何写
自己琢磨着写了一个,但总是写不好,效果只是显示一次,我想要数字动态的显示:5,4,3,2,1
这样,哪位大狭会的帮帮我

我写的代码如下(肯定有很多错误的地方,望各位积极指正)

<script language="javascript">
var a = 6;


var y = setTimeout("ds()",100);
var ds = function()
{
if(a>0)
{
for(var b =a-1;b<a;b++)
{


document.write(b);


}
}
else
{
close();
}



}
y();

</script>
9 回复
#2
zhulei19782007-06-25 20:21

<html><head>
<script language="javascript">
var a =6;
var b=a;
var y = setTimeout("ds()",1000);
var ds = function(){
if(b>1){
b--;
tim1.innerHTML=b;
}
else{
close();
}
setTimeout("ds()",1000);
}
y();
</script>
</head><body>
<div class="class" id="tim1"

style="height:20px;left:40px;position:absolute;top:80px;width:100px">
</div></body></html>

#3
zhulei19782007-06-25 20:42
你那个for循环写错了,应该是
for(var b =a-1;b>0;b--)
,还有用for循环是不能达到你要的效果的
#4
afeifei2007-06-25 23:47
谢谢zhulei1978,
不过我还有些地方不明白,还请指点
if(b>1)
{
b--;
tim1.innerHTML=b;
}
这段代码的意思是不是如果B大于1,B就减1,然后显示出B?
但是tim1.innerHTML=b;这句代码我不明白,没见过,这是啥意思啊?是一个对象?还是方法?或者属性?
还有第二个setTimeout("ds()",1000);
第一个setTimeout("ds()",1000);已经指出每一秒钟执行一次DS函数了,为什么在函数里面又出来一个setTimeout("ds()",1000);???那不就成了1%100秒了吗?不明白是怎么回事

你这段代码是没有问题,就是上面2个问题我搞不懂
#5
afeifei2007-06-25 23:53

忘了还有
<div class="class" id="tim1"

style="height:20px;left:40px;position:absolute;top:80px;width:100px">
</div>
这段代码我也不明白是啥意思,呵呵,望高手指教
我刚刚学习JS,可能很笨,各位高手不要取笑偶~~~

#6
谁与争疯2007-06-25 23:56
你用的document.write(b);是输出。如果用这种方法实现、那么将会循环输出5至(54321)
tim1是<div class="class" id="tim1" >

if(b>1){
如果倒计时大于1秒,就一直b-- (自减) 一直到不能满足条件为止。
#7
zhulei19782007-06-26 09:53
以下是引用afeifei在2007-6-25 23:53:51的发言:

忘了还有
<div class="class" id="tim1"

style="height:20px;left:40px;position:absolute;top:80px;width:100px">
</div>
这段代码我也不明白是啥意思,呵呵,望高手指教
我刚刚学习JS,可能很笨,各位高手不要取笑偶~~~

<div class="class" id="tim1"style="height:20px;left:40px;position:absolute;top:80px;width:100px">
</div>
这句话就是定义一个层,tim1是它的id,调用它的时候要用到
style="height:20px;left:40px;position:absolute;top:80px;width:100px"
这是CSS(层叠样式表),主要是定义这个层的位置以及大小

#8
zhulei19782007-06-26 09:58
以下是引用afeifei在2007-6-25 23:47:01的发言:
谢谢zhulei1978,
不过我还有些地方不明白,还请指点
if(b>1)
{
b--;
tim1.innerHTML=b;
}
这段代码的意思是不是如果B大于1,B就减1,然后显示出B?
但是tim1.innerHTML=b;这句代码我不明白,没见过,这是啥意思啊?是一个对象?还是方法?或者属性?
还有第二个setTimeout("ds()",1000);
第一个setTimeout("ds()",1000);已经指出每一秒钟执行一次DS函数了,为什么在函数里面又出来一个setTimeout("ds()",1000);???那不就成了1%100秒了吗?不明白是怎么回事

你这段代码是没有问题,就是上面2个问题我搞不懂

if(b>1)
{
b--;
tim1.innerHTML=b;
}
如果B大于1,B就减1,然后显示出B
tim1就是下面定义的层的id

tim1.innerHTML=b,这个方法把通过Javascript编辑的普通HTML文本加入到一个层中去

setTimeout("ds()",1000)
它不是每秒钟执行一次DS函数,而是经过一秒钟后执行一次DS,然后就不再执行,这与c++有所不同,所以在函数中还要调用一次setTimeout("ds()",1000)

#9
afeifei2007-06-28 00:40

恩,看到大家都这么热情,以后我就在这混了,哈哈~`

看到你们的答复,我明白的一些,但还不是完全明白,剩下的我自己搞定吧
真谢谢大家的帮助了~~~

#10
_小心2011-06-07 19:31
回复 8楼 zhulei1978
setTimeout();不是就是每隔一秒循环一次吗?
1