weixin_41244451 2024-06-12 16:10 采纳率: 93.9%
浏览 1
已结题

怎么把全部题做完用了多少时间也统计到新页面/oa/oa_zxsxl.php?act=jieguo中去?


<script>
....省略
function generateQuestion() {
    let result = 0;
    const operators = ['+', '-'];
    let question = '';
    let lastOperator = '+'; // 初始操作符为加号
    let lastNumber = null; // 初始化上一个数字为null
    let buttonsDisabled = true; // 按钮初始状态为不可点击
    
    if(type==7)
    {
        if(bishu==2)
        {
            bishu=3;
        }
    }
    for (let i = 0; i < bishu; i++) {//几笔
        let number, operator;
        let validNumber = false;
        let result_onesDigit=onesDigit(result);
 
        // 循环直到找到一个合适的数字
        do {
            if(type==1)//1-4直加直减
            {
                              number = Math.floor(Math.random() * 4) + 1; // 1-4的随机数
                              operator = operators[Math.floor(Math.random() * 2)];
                              // 检查当前操作符和数字是否会导致结果超出范围
                if (operator === '+') {
                    validNumber = result + number <= 4;
                }
                                else
                                {
                    validNumber = result - number >= 0;
                }
            }
                        // 检查新数字和操作符与上一个数字和操作符是否不同
                        if (lastNumber !== null && (number === lastNumber || (lastOperator === operator && number === lastNumber))) {
                              validNumber = false;
                        }
        } while (!validNumber);
        lastOperator = operator; // 更新上一个操作符
        lastNumber = number; // 更新上一个数字
        setTimeout(() => {
                if(i === 0)
                {
                        displayQuestion(number,'','');
                }
        }, (i + 1) * shijian*1000);//间隔时间*1000
        result += operator === '+' ? number : -number;
        question += (i > 0 ? ' ' : '') + operator + number;
    }
    questions.push({ question: question, answer: result });
}
 
function checkAnswer() {
    if($.trim($("input[name=answerInput]").val()) == "")
    {
        $("input[name=answerInput]").focus();
        return false;
    }
    document.getElementById('question1').textContent='';
    isQuestionDisplayed = false;//每一题重新禁用按纽
    const userAnswer = parseInt(document.getElementById('answerInput').value);
    if (userAnswer === questions[currentQuestionIndex].answer) {
        alert('正确!');
    } else {
        alert('错误,正确答案是: ' + questions[currentQuestionIndex].answer);
    }
    document.getElementById('answerInput').value = '';
    $("input[name=answerInput]").focus();

    if (userAnswer !== undefined) { // 确保 userAnswer 已被定义
        questions[currentQuestionIndex].userAnswer = userAnswer; // 添加这一行
    }
    if (userAnswer === questions[currentQuestionIndex].answer) {
        questions[currentQuestionIndex].isCorrect = true;
    } else {
        questions[currentQuestionIndex].isCorrect = false;
    }

    if(tiliang==1)
    {
        if (currentQuestionIndex < zushu-1) {//几道题
            currentQuestionIndex++;
            document.getElementById('question').textContent = '';
            generateQuestion();
        } else {
            localStorage.setItem('questionsData', JSON.stringify(questions));
            window.location.href = "/oa/oa_zxsxl.php?act=jieguo";
        }
    }
}
省略......
</script>

怎么把全部题做完用了多少时间也统计到新页面/oa/oa_zxsxl.php?act=jieguo中去?

  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2024-06-12 16:10
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    要实现这个功能,你可以按照以下步骤进行:

    1. 记录答题开始时间:在用户开始答题之前,记录下当前时间。
    2. 记录答题结束时间:在用户完成所有题目后,再次记录时间。
    3. 计算总时间:用结束时间减去开始时间,得到总时间。
    4. 存储和传递时间数据:将总时间存储在localStorage或者通过POST请求传递给PHP页面。
    5. 在PHP页面显示时间:在/oa/oa_zxsxl.php页面上,获取传递的时间数据并显示。

    下面是具体的代码实现:

    JavaScript 部分

    generateQuestion函数开始之前添加一个变量来记录开始时间:

    let startTime; // 答题开始时间
    
    function startTiming() {
        startTime = new Date(); // 记录开始时间
    }
    
    // 在用户点击开始答题的按钮时调用 startTiming 函数
    // document.getElementById('startButton').addEventListener('click', startTiming);
    

    checkAnswer函数的最后,添加代码来记录结束时间并计算总时间:

    function checkAnswer() {
        // ... 省略其他代码 ...
    
        if(tiliang==1) {
            // ... 省略其他代码 ...
            if (currentQuestionIndex < zushu-1) {
                // ... 省略其他代码 ...
            } else {
                const endTime = new Date(); // 记录结束时间
                const totalTime = (endTime - startTime) / 1000; // 计算总时间,单位为秒
    
                // 将总时间保存到localStorage
                localStorage.setItem('totalTime', totalTime);
    
                // 跳转到新页面并传递总时间
                window.location.href = "/oa/oa_zxsxl.php?act=jieguo&totalTime=" + totalTime;
            }
        }
    }
    

    PHP 部分

    /oa/oa_zxsxl.php页面,获取传递的总时间并显示:

    <?php
        // 获取传递的总时间
        $totalTime = isset($_GET['totalTime']) ? (float)$_GET['totalTime'] : 0;
    
        // 将秒转换为分钟和秒
        $minutes = floor($totalTime / 60);
        $seconds = fmod($totalTime, 60);
    
        // 显示总时间
        echo "<p>总答题时间:{$minutes}分{$seconds}秒</p>";
    ?>
    

    注意事项

    • 确保在用户开始答题之前调用startTiming函数。
    • 如果使用localStorage,请确保浏览器支持该功能,并且在用户完成题目后跳转前保存数据。
    • 如果使用GET请求传递时间数据,请确保URL长度不会超出限制。

    参考资料

    这些代码和步骤应该能够帮助你实现所需的功能。如果有任何问题,可以进一步讨论。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月12日
  • 已采纳回答 6月12日
  • 创建了问题 6月12日

悬赏问题

  • ¥15 vue请求不到数据,返回状态200,数据为html
  • ¥15 访问url时不会自动调用其 Servlet的doGet()
  • ¥15 用白鹭引擎开发棋牌游戏的前端为什么这么难找
  • ¥15 MATLAB解决问题
  • ¥35 哪位专业人士知道这是什么原件吗?哪里可以买到?
  • ¥15 关于#c##的问题:treenode反序列化后获取不到上一节点和下一节点,Fullpath和Handle报错
  • ¥15 一部手机能否同时用不同的app进入不同的直播间?
  • ¥20 输入import torch显示Intel MKL FATAL ERROR,系统驱动1%,: Cannot load mkl_intel_thread.dll.
  • ¥15 点云密度大则包围盒小
  • ¥15 nginx使用nfs进行服务器的数据共享