Javascript 我的测验倒计时计时器未按预期工作

Javascript 我的测验倒计时计时器未按预期工作,javascript,html,Javascript,Html,我已经用php创建了一个简单的测验网站,我想为每个问题集成30秒的倒计时,下面是代码: var timeleft = 30; var downloadTimer = setInterval(function(){ timeleft--; document.getElementById("countdowntimer").textContent = timeleft; if(timeleft <= 0) { clearInterval(download

我已经用php创建了一个简单的测验网站,我想为每个问题集成30秒的倒计时,下面是代码:

var timeleft = 30;
var downloadTimer = setInterval(function(){
    timeleft--;
    document.getElementById("countdowntimer").textContent = timeleft;
    if(timeleft <= 0) {
        clearInterval(downloadTimer);
    }
    document.getElementById("quiz").submit();
},1000);
var timeleft=30;
var downloadTimer=setInterval(函数(){
时间限制--;
document.getElementById(“倒计时”).textContent=timeleft;
如果(时间限制)


>
>
  • 这里还有一段javascript代码,用于在没有选择的情况下停止使用以转到下一个问题

    document.getElementById("quiz").onsubmit = function(event){
                var btn = document.getElementById("next");
    
        var choices = document.getElementsByClassName("choices");
        for(var i=0;i<choices.length;i++){
            if(choices[i].checked){
                return true;
            }
        }
            event.preventDefault();
            return alert("you must choose option first");
        }
    
    document.getElementById(“测验”).onsubmit=函数(事件){
    var btn=document.getElementById(“下一步”);
    var choices=document.getElementsByClassName(“选项”);
    对于(var i=0;i试试这个

    var timeleft=30;
    var downloadTimer=setInterval(函数(){
    时间限制--;
    document.getElementById(“倒计时”).textContent=timeleft;
    如果(timeleft尝试这个

    var timeleft=30;
    var downloadTimer=setInterval(函数(){
    时间限制--;
    document.getElementById(“倒计时”).textContent=timeleft;
    
    if(timeleft)是不是刚好在它达到零之前,你看到了吗?你能试着把
    timeleft--
    移到
    if(timeleft否)下吗?测验开始时,表单提交时,它从不倒计时移动
    submit()
    if
    条件内调用这是因为表单提交语句不在if块内。您可以尝试countdown.js,是不是正好在它达到零之前看到了这个?您可以尝试将
    timeleft--
    向下移动到
    if(timeleft否)下吗?当测验开始提交表单时,它永远不会倒计时移动
    submit()
    if
    条件内调用这是因为表单提交语句不在if块内。您可以尝试countdown.js,这似乎是一个很好的答案,将提交移到剩余时间检查内,我已经投了赞成票。可能会添加一些解释,但对我来说似乎足够清楚。但正如@David所建议的,您应该添加更多关于h的详细信息你怎么解决的。你说得对。谢谢你的努力。但是我编辑了我的问题。还有一个问题似乎是一个好答案,将提交移到左时间内检查,我投了更高的票。也许可以添加一些解释,但对我来说似乎足够清楚。但是正如@David所建议的,你应该添加更多关于如何解决它的细节。你是正确的谢谢你的帮忙。但是我编辑了我的问题还有一个问题
    <form action="process.php" method="get" id="quiz">
                                <ul class="list-unstyled" id="questions">
                                    <li> <h3><?php echo $question['questions']; ?></h3> 
                                        <ul class="list-unstyled">  
                                            <?php
                                                while($choice = mysqli_fetch_assoc($result)){
                                             echo "<li><input type='radio' name='quiz' class='choices' value='".$choice['id']."' > ".$choice['choices']."  </li> ";
                                            } ?>
                                        </ul>
                                    </li>
                                    <input type="hidden" name="start" value=<?php echo $start; ?>>
                                    <input type="hidden" name="cate" value=<?php echo $selected; ?>>
                                    <input type="hidden" name="total" value=<?php echo $total; ?>>
                                    <input type="hidden" name="qn" value=<?php echo $questionnumber; ?>>
                                    <li> <input type="submit" value="Next" class="btn btn-primary" id="next"> </li> 
                                </ul>
                            </form>
    
    document.getElementById("quiz").onsubmit = function(event){
                var btn = document.getElementById("next");
    
        var choices = document.getElementsByClassName("choices");
        for(var i=0;i<choices.length;i++){
            if(choices[i].checked){
                return true;
            }
        }
            event.preventDefault();
            return alert("you must choose option first");
        }