weixin_41244451 2024-06-12 17:34 采纳率: 93.9%
浏览 0
已结题

怎么把错题显示在前面,对题显示在后面


<script>
window.onload = function() {
    const questionsData = JSON.parse(localStorage.getItem('questionsData'));
    const resultsTableBody = document.getElementById('resultsTableBody');
    let correctCount = 0;
    let wrongCount = 0;
 
    // 计算对错题数
    questionsData.forEach(question => {
        if (question.isCorrect) {
            correctCount++;
        } else {
            wrongCount++;
        }
    });
    // 更新段落文本
    const summaryElement1 = document.getElementById('summary1');
    const summaryElement2 = document.getElementById('summary2');
    const summaryElement3 = document.getElementById('summary3');
    const summaryElement4 = document.getElementById('summary4');//准确率
    let zts=correctCount+wrongCount;//总题数
    let zql=correctCount/zts*100;
    summaryElement1.textContent = `对题数:${correctCount}`;
    summaryElement2.textContent = `错题数:${wrongCount}`;
    summaryElement3.textContent = `总题数:${zts}`;
    summaryElement4.textContent = `准确率:${zql}%`;
    
    questionsData.forEach((question, index) => {
        const row = resultsTableBody.insertRow();
        const cell1 = row.insertCell(0);
        const cell2 = row.insertCell(1);
        const cell3 = row.insertCell(2);
        const cell4 = row.insertCell(3);
        const cell5 = row.insertCell(4);
        
        // 添加class到每个cell
        cell1.className = "biankuan2";
        cell2.className = "biankuan3";
        cell3.className = "biankuan3";
        cell4.className = "biankuan3";
        cell5.className = "biankuan3";
        cell1.height = "40";
        if (question.isCorrect) {} else {
            cell1.style = 'color: crimson';
            cell2.style = 'color: crimson';
            cell3.style = 'color: crimson';
            cell4.style = 'color: crimson';
            cell5.style = 'color: crimson';
        }
        
        cell1.textContent = index + 1;
        cell2.textContent = question.question;
        // 根据是否正确显示答案
        cell3.textContent = question.userAnswer;
        cell4.textContent = question.answer;
        cell5.textContent = question.isCorrect ? '√' : '×';
    });
};
</script>

怎么把错题显示在前面,对题显示在后面

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-12 17:34
    关注

    引自免费微信小程序:皆我百晓生

    要实现将错题显示在前面,对题显示在后面的功能,可以先将questionsData数组根据isCorrect属性进行排序。具体来说,可以使用JavaScript的sort()方法,根据isCorrect属性的布尔值进行排序,使得所有false(即错题)在前,true(即对题)在后。

    下面是修改后的代码段,主要改动在于新增了排序逻辑:

    <script>
    window.onload = function() {
        const questionsData = JSON.parse(localStorage.getItem('questionsData'));
        const resultsTableBody = document.getElementById('resultsTableBody');
        
        // 对questionsData进行排序,错题在前,对题在后
        questionsData.sort((a, b) => {
            return a.isCorrect === b.isCorrect ? 0 : a.isCorrect ? 1 : -1;
        });
    
        let correctCount = 0;
        let wrongCount = 0;
    
        // 计算对错题数
        questionsData.forEach(question => {
            if (question.isCorrect) {
                correctCount++;
            } else {
                wrongCount++;
            }
        });
    
        // 更新段落文本
        const summaryElement1 = document.getElementById('summary1');
        const summaryElement2 = document.getElementById('summary2');
        const summaryElement3 = document.getElementById('summary3');
        const summaryElement4 = document.getElementById('summary4');
        let zts=correctCount+wrongCount;
        let zql=correctCount/zts*100;
        summaryElement1.textContent = `对题数:${correctCount}`;
        summaryElement2.textContent = `错题数:${wrongCount}`;
        summaryElement3.textContent = `总题数:${zts}`;
        summaryElement4.textContent = `准确率:${zql.toFixed(2)}%`;
    
        questionsData.forEach((question, index) => {
            const row = resultsTableBody.insertRow();
            const cell1 = row.insertCell(0);
            const cell2 = row.insertCell(1);
            const cell3 = row.insertCell(2);
            const cell4 = row.insertCell(3);
            const cell5 = row.insertCell(4);
    
            // 添加class到每个cell
            cell1.className = "biankuan2";
            cell2.className = "biankuan3";
            cell3.className = "biankuan3";
            cell4.className = "biankuan3";
            cell5.className = "biankuan3";
            cell1.height = "40";
    
            // 设置错误题目的颜色为crimson
            if (!question.isCorrect) {
                cell1.style.color = 'crimson';
                cell2.style.color = 'crimson';
                cell3.style.color = 'crimson';
                cell4.style.color = 'crimson';
                cell5.style.color = 'crimson';
            }
    
            cell1.textContent = index + 1;
            cell2.textContent = question.question;
            cell3.textContent = question.userAnswer;
            cell4.textContent = question.answer;
            cell5.textContent = question.isCorrect ? '√' : '×';
        });
    };
    </script>
    

    以上代码中,关键部分是使用sort()函数对questionsData进行排序。sort()函数中的比较函数会检查两个元素的isCorrect属性,确保错题排在前面,对题排在后面。这样处理之后,当遍历questionsData时,错题将首先被添加到表格中,随后才是对题。

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

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。
  • ¥50 win10链接MySQL
  • ¥35 跳过我的世界插件ip验证
  • ¥15 抖音看过的视频,缓存在哪个文件
  • ¥15 自定义损失函数报输入参数的数目不足
  • ¥15 如果我想学习C大家有是的的资料吗
  • ¥15 根据文件名称对文件进行排序
  • ¥15 deploylinux的ubuntu系统无法成功安装使用MySQL❓
  • ¥15 有人会用py或者r画这种图吗