关于js倒计时的问题,请教一下大家

fanfangchao 2015-06-13 09:27:37
最近在弄倒计时答题,倒计时20s 后自动跳转下一题,下一题也是同理倒计时20s

结果在第一题自动跳转第二题的时候,在第二题的20s倒计时 就会非常快,而跳到第三题的时候,还会出现负的秒数,这个是什么原因呢?

这个是答题的页面代码,用ajax来获取题的内容,填充到id为exm的div中:

<div class="row" id="exm">
</div>


而填充的内容是一段html代码(其中包括了倒计时)代码如下(程序是用ThinkPHP框架来写的):

<div class="web_box">
<div class="web_boxx">
<div class="web_logo"><img src="__PUBLIC__/pc/images/dati_t.png" /></div>
<h3>{$vo.title}</h3>
</div>
<div class="div20px"></div>
<div class="web_tt">
<div class="web_line">
<input type="radio" name="optionsRadios" id="optionsRadios1" value="a"><label for="web_ra"> A.{$vo.question_a}</label>
<div class="web_clear"></div>
</div>
<div class="web_line">
<input type="radio" name="optionsRadios" id="optionsRadios2" value="b"><label for="web_ra1">B.{$vo.question_b}</label>
<div class="web_clear"></div>
</div>
<div class="web_line">
<input type="radio" name="optionsRadios" id="optionsRadios3" value="c"><label for="web_ra2">C.{$vo.question_c}</label>
<div class="web_clear"></div>
</div>
<if condition="$vo['question_d'] neq ''">
<div class="web_line">
<input type="radio" name="optionsRadios" id="optionsRadios4" value="d"><label for="web_ra3">D.{$vo.question_d}</label>
<div class="web_clear"></div>
</div>
</if>
</div>
<div class="web_clear"></div>
<div class="div20px"></div>
<div class="web_tj_btn">
<a href="#" class="web_input_btn" id="next">提交(下一题)</a>
<span><em id="count" style=" font-style:normal;"></em>s之后自动跳转......</span>
<div class="web_clear"></div>
</div>
</div>


js倒计时代码如下:

<script type="text/javascript">
var num=20;
function startCount() {
document.getElementById('count').innerHTML=num;
num=num-1;
var timer=setTimeout("startCount()",1000);
if(num==0)
{
$("#next").trigger("click");
}
}


$(document).ready(function(){
setTimeout("startCount()",1000)
});

...全文
161 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fanfangchao 2015-06-13
  • 打赏
  • 举报
回复
引用 2 楼 net_lover 的回复:
就会非常快? 一般是因为timer这个变量没有设置为clearTimeout timer一般设置为全局变量。下次开始之前执行clearTimeout(timer) 你代码不全,没有看到下一题是怎么进行倒计时的 出现负数? 你可以修改判断 if(num<1)
js提交代码如下:

$("#next").on('click',function(){
            var position = $('#position').val();
            var answer = $('input[name="optionsRadios"]:checked').val();
            var eid = $('#eid').val();
            var iid = $('#iid').val();
            var openid = $('#openid').val();
            if(!answer){
                answer=0;
            }            
                $.ajax({
                    url:"{:U('Index/show')}",
                    data:{'position': position++,'eid':eid,'answer':answer,'iid':iid},
                    dataType:"json",
                    type:"post",
                    success:function(retData){
                        $('#exm').empty();
                        $('#exm').html(retData);
                    }
                });
            
fanfangchao 2015-06-13
  • 打赏
  • 举报
回复
引用 2 楼 net_lover 的回复:
就会非常快? 一般是因为timer这个变量没有设置为clearTimeout timer一般设置为全局变量。下次开始之前执行clearTimeout(timer) 你代码不全,没有看到下一题是怎么进行倒计时的 出现负数? 你可以修改判断 if(num<1)
下一题就是点击id="next"的a标签利用ajax来提交,然后获取到下一题的问题和选项,然后

success:function(retData){
                        $('#exm').empty();
                        $('#exm').html(retData);
                    }
孟子E章 2015-06-13
  • 打赏
  • 举报
回复
就会非常快? 一般是因为timer这个变量没有设置为clearTimeout timer一般设置为全局变量。下次开始之前执行clearTimeout(timer) 你代码不全,没有看到下一题是怎么进行倒计时的 出现负数? 你可以修改判断 if(num<1)
fanfangchao 2015-06-13
  • 打赏
  • 举报
回复
大家帮帮忙,这个问题有点迷茫
发帖
JavaScript

8.7w+

社区成员

Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
帖子事件
创建了帖子
2015-06-13 09:27
社区公告
暂无公告