运行 得分/问答游戏

Running Score / Quiz game

我是一名编码初学者,我正在研究这个测验类型的程序。它需要问预先创建的问题,然后检查你是否得到了正确的答案,调整你的 运行 分数,然后显示下一个问题。我完成了其他一切,但让我卡住的部分是这部分。

<!doctype html>
    
    <html lang="en">
    <head>
        <title>Group Project</title>
    </head>
    <body>
        <script text="text/javascript">
            var a = 0;
            var b = 0;
            document.write(a, "/", b)  
            function score() {
                
            
            var a = 0;
            var b = 0;
              
            if (document.question.one.value=="10") {
                ++a;
                ++b;
               
            }
            else{
                ++b;
                
            }
            document.write(a, "/", b)
            }
        </script>
        
        
        <form name="question"><br>
            <input type="text" name="one"/><br>
            <input type="button" value="Submit" onclick="score()" />
            
            
        </form>

我在 IF 语句中选择 10 只是为了看看增量是否有效,但是当我在文本输入中输入 10 时会发生什么,页面重新加载,只显示创建的分数,没有按钮或文本输入。我怎样才能使分数或分数保持一致,并且不需要重新加载完整的页面来增加?

您不想使用 document.write,因为它会清除所有文档以写入新内容。相反,您应该更改某些 DOM 元素的内部文本内容,例如 div。例如:

<form name="question">
    <div id="score"></div>
    <input type="text" name="one" />
    <br>
    <input type="button" value="Submit" onclick="score()" />
</form>

<script text="text/javascript">
    var a = 0;
    var b = 0;
    
    write(a, b);

    function score() {

        var a = 0;
        var b = 0;

        if (document.question.one.value == "10") {
            ++a;
            ++b;
        } else {
            ++b;
        }
        write(a, b);
    }
    
    function write(a, b) {
        document.getElementById('score').innerHTML = a + "/" + b;
    }
</script>

在上面的代码中,我引入了辅助函数 write,它在 div#score div.

中显示范围文本

另请注意,脚本现在位于表单元素之后,以确保 write 函数在执行时可以定位到 div#score(届时应该加载 HTML)。

除了上面的答案,我还推荐以下内容。如果您以编程方式修改页面内容,通常可以使用提供 cleaner/more 直接界面的库来节省时间。一个用于此目的的通用库是 jQuery:http://jquery.com/