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

想在错题后面加一个“重做错题”按纽,点击这个按纽就进入到zuo题那个页面,把题重新做一次


cell2.textContent = question.isCorrect ? question.question.slice(1) : question.question.slice(1)+'<button onclick="chongzuo(question.question)" style="width: 100%; height: 90px; font-size: 40px;">重做错题</button>';

1、加在后面,怎么是一串原代码,不是按纽
2、想在错题后面加一个“重做错题”按纽,点击这个按纽就进入到做题那个页面,把题重新做一次

做题页面:

<script language="javascript">
/*.............省略............*/

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(() => {
                displayQuestion(number,'','');
        }, (i + 1) * shijian*1000);//间隔时间*1000
        
        result += operator === '+' ? number : -number;
        question += (i > 0 ? ' ' : '') + operator + number;
    }
    if(xingshi==1 || xingshi==2)
    {
        setTimeout(() => {
            document.getElementById('question').textContent = '请答题';
            isQuestionDisplayed = true; // 在显示“请答题”后将标志设为true
        }, shijian*bishu*1000+1000);
    }
    else
    {
        let yanshi=shijian*1000+1000+1000*1.5*bishu-300*bishu*yusu/4;
        setTimeout(() => {
            document.getElementById('question').textContent = '请答题';
            isQuestionDisplayed = true; // 在显示“请答题”后将标志设为true
        }, yanshi);
    }
    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 {
            let endTime = new Date().getTime(); // 记录结束时间
            let totalTime = (endTime - startTime) / 1000; // 转换为秒
            localStorage.setItem('questionsData', JSON.stringify(questions));
            window.location.href = "/oa/oa_zxsxl.php?act=jieguo&totalTime="+totalTime+"&type={$type}&type_text={$type_text}&xingshi={$xingshi}&xingshi_text={$xingshi_text}&tiliang={$tiliang}&zushu={$zushu}&bishu={$bishu}&shijian={$shijian}&yusu={$yusu}";
        }
    }
    else
    {
        currentQuestionIndex++;
        document.getElementById('question').textContent = '';
        generateQuestion();
    }
    if(xingshi==1 || xingshi==2)
    {
        document.getElementById('question').textContent = '请看题';
    }
    else
    {
        document.getElementById('question').textContent = '请听题';
        speak1('请听题');
    }
}
if(tiliang==1)
{
    // 初始化第一题
    generateQuestion();
}
else
{
    // 初始化答题系统
    function initQuizSystem() {
        generateQuestion(); // 初始化第一题
        startTimer(zushu * 60 * 1000); // 开始10分钟计时
    }
    // 在页面加载完成后初始化答题系统
    window.onload = initQuizSystem;
}
</script>

<table width="100%" border="0" cellpadding="0" cellspacing="0">
            <tr class="STYLE2">
              <td height="600" colspan="3" align="center" valign="middle" style="font-size: 300px;"><div id="question">{if $xingshi eq 1 or $xingshi eq 2}请看题{else}请听题{/if}</div><div id="question1"></div><input type="hidden" name="answerInput" id="answerInput" placeholder="输入答案"></td>
            </tr>
            <tr class="STYLE2">
              <td align="center" valign="middle" style="font-size: 300px;">
                  <table width="100%" border="0" cellpadding="0" cellspacing="0">
                      <tr class="STYLE2">
                          <td width="25%" height="90" align="center"><button onclick="shuzi(1)" style="width: 100%; height: 90px; font-size: 40px;">1</button></td>
                          <td width="25%" align="center"><button onclick="shuzi(2)" style="width: 100%; height: 90px; font-size: 40px;">2</button></td>
                          <td width="25%" align="center"><button onclick="shuzi(3)" style="width: 100%; height: 90px; font-size: 40px;">3</button></td>
                          <td width="25%" align="center"><button onclick="shuzi(0)" style="width: 100%; height: 90px; font-size: 40px;">0</button></td>
                      </tr>
                      <tr class="STYLE2">
                          <td height="90" align="center"><button onclick="shuzi(4)" style="width: 100%; height: 90px; font-size: 40px;">4</button></td>
                          <td align="center"><button onclick="shuzi(5)" style="width: 100%; height: 90px; font-size: 40px;">5</button></td>
                          <td align="center"><button onclick="shuzi(6)" style="width: 100%; height: 90px; font-size: 40px;">6</button></td>
                          <td align="center"><button onclick="shuzi('qingchu')" style="width: 100%; height: 90px; font-size: 40px;">清除</button></td>
                      </tr>
                      <tr class="STYLE2">
                          <td height="90" align="center"><button onclick="shuzi(7)" style="width: 100%; height: 90px; font-size: 40px;">7</button></td>
                          <td align="center"><button onclick="shuzi(8)" style="width: 100%; height: 90px; font-size: 40px;">8</button></td>
                          <td align="center"><button onclick="shuzi(9)" style="width: 100%; height: 90px; font-size: 40px;">9</button></td>
                          <td align="center"><button onclick="checkAnswer()" style="width: 100%; height: 90px; font-size: 40px;">{if $zushu eq 1 and $tiliang eq 1}看答案{else}下一题{/if}</button></td>
                      </tr>
                  </table>
              </td>
            </tr>
          </table>
  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2024-06-12 20:02
    关注

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


    首先,让我们解决第一个问题,即如何将原始代码中的字符串替换为实际的HTML按钮元素。在JavaScript中,你可以使用innerHTML属性来设置元素的HTML内容。以下是修改后的代码示例:

    cell2.textContent = question.isCorrect ? question.question.slice(1) : question.question.slice(1) + '重做错题';
    cell2.innerHTML += '<button onclick="chongzuo(\'' + question.question + '\')">重做错题</button>';
    

    这里,我们首先设置textContent来显示题目,然后使用innerHTML来添加按钮。注意,我们在按钮的onclick属性中使用了单引号和双引号的嵌套,以确保字符串能够正确地传递给函数。

    接下来,我们需要定义chongzuo函数。这个函数将接收题目信息,并使用window.location.href来重定向用户到做题页面。同时,我们需要将题目信息传递给做题页面。这可以通过URL查询参数或者使用localStorage来实现。以下是使用URL查询参数的示例:

    function chongzuo(question) {
        // 将题目信息编码并附加到URL
        const encodedQuestion = encodeURIComponent(question);
        window.location.href = '做题页面URL?question=' + encodedQuestion;
    }
    

    在做题页面,你需要添加逻辑来检查URL中的查询参数,并使用它来生成题目。这可以通过JavaScript的URLSearchParams来实现:

    function generateQuestionFromURL() {
        const params = new URLSearchParams(window.location.search);
        const question = params.get('question');
        if (question) {
            // 解码题目信息并生成题目
            const decodedQuestion = decodeURIComponent(question);
            // 这里调用你现有的generateQuestion函数,并传递解码后的题目信息
            // generateQuestion(decodedQuestion);
        }
    }
    
    // 页面加载时检查URL参数
    window.onload = function() {
        generateQuestionFromURL();
    };
    

    最后,你需要确保做题页面能够接收到题目信息并允许用户重新做题。这可能涉及到修改generateQuestion函数,使其能够接受一个题目字符串作为参数,并使用这个字符串来生成题目。

    至于参考资料,你可以查看以下资源来了解更多关于JavaScript、HTML和页面间通信的信息:

    1. MDN Web Docs - HTML 按钮
    2. MDN Web Docs - innerHTML
    3. MDN Web Docs - URLSearchParams
    4. W3Schools - JavaScript URL 编码

    请注意,上述代码仅为示例,你可能需要根据你的具体需求进行调整。

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

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 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进行服务器的数据共享