优学院如何将错题全整理到一起

发布时间:2026/6/30 10:46:41

优学院如何将错题全整理到一起 期末周到了思政课的题库又来啦。一页一道地刷不说错题还不能提取出来非常的麻烦。其实可以选择不做直接提交这样所有全是错题。好了抱怨完毕开始进入正题——如何将所有错题提取出来整理成文档。首先打开电脑搜索优学院登入官网。这里其实就能看到所有题目比手机上一页一道题方便太多对比一下然后打开网页控制台右上角三个点-》更多工具-》开发者工具 or 直接f12接着看代码先了解后应用附有完整代码控制台点击左上角的那个图标获取需要的元素的类名。var allQuestions document.querySelectorAll(.base-question); //获取所有的题目 var wrongQuestions [];//设置应该错题空数组allQuestions.forEach(function(q) { // 在该容器内查找是否有 “回答错误”那个提示也就是classresult-text wrong 的元素 var wrongSpan q.querySelector(.result-text.wrong); if (wrongSpan) { // 如果是错题将该容器加入数组 wrongQuestions.push(q); }获取错题内容题干、选项、考生答案、正确答案等var result ;//设置result对象 wrongQuestions.forEach(function(q, index) {//遍历错题 var content cloneWithText.innerText.trim(); result 错题 (index 1) \n;//这个是为了美观不可不要 result content \n;//可以\n\n换两行视觉分隔开更加美观 });自动复制错题try { var textarea document.createElement(textarea);\\创建textarea 标签因为 textarea.value result;\\获取内容 textarea.style.position fixed; textarea.style.left -9999px; 移到屏幕隐藏为了美观 document.body.appendChild(textarea);挂载 textarea.select();\\选取textarea里的所有内容 懒得切换输入法了就没打\\了 var success document.execCommand(copy);复制这是浏览器内置复制指令 document.body.removeChild(textarea);复制完删掉避免页面残留多余 DOM 节点、内存占用 } catch (e) { alert(成功提取 wrongQuestions.length 道错题);如果有什么安全策略拦截什么的提示已经复制了多少题 }其实前面三步就已经成了但是遇到判断题答案是√、×就无法显示答案将图表转换为文字判断function replaceIconsWithText(container) { // 克隆容器避免修改原DOM var clone container.cloneNode(true); // 查找所有图标元素得实际情况调整选择器,按照第一步查看元素 var icons clone.querySelectorAll(i.iconfont); icons.forEach(function(icon) { var classes icon.className || ; var text ; // 根据类名判断是正确还是错误 if (classes.includes(zhengque)) { text 正确; } else if (classes.includes(cuowu)) { text 错误; }5.这回前四步真的成了如果有细看前几步骤代码的注释的可以发现有个词出现了多次——“美观”。为了让排版美观可以var choicesContainers clone.querySelectorAll(.choices); 副本避免修改原dom choicesContainers.forEach(function(choices) { var prevBr document.createTextNode(\n);在选项组整体前面插入换行使题干和选项分开 choices.parentNode.insertBefore(prevBr, choices); 在选项组整体后面插入换行 var nextBr document.createTextNode(\n); if (choices.nextSibling) { choices.parentNode.insertBefore(nextBr, choices.nextSibling); 后面还有选项插入后面选项前 } else { choices.parentNode.appendChild(nextBr); 没有插入末尾 } 在每个选项内部后面插入换行 var optionItems choices.children; for (var i optionItems.length - 1; i 0; i--) { var item optionItems[i]; var br document.createTextNode(\n); if (item.nextSibling) { choices.insertBefore(br, item.nextSibling); } else { choices.appendChild(br); } } });欧克欧克下面是总的代码是ai修改过后更加的严谨适配大多数情况(function() { // 1. 获取所有题目容器 var allQuestions document.querySelectorAll(.base-question); var wrongQuestions []; // 2. 筛选错题 allQuestions.forEach(function(q) { if (q.querySelector(.result-text.wrong)) { wrongQuestions.push(q); } }); if (wrongQuestions.length 0) { alert(当前页面没有找到错题请确认是否在练习结果页面且所有题目已加载。); return; } // 3. 辅助函数将图标转换为文字并为选项区域前后及每个选项添加换行 function replaceIconsWithText(container) { // 克隆容器避免修改原DOM var clone container.cloneNode(true); // --- 步骤1替换图标为文字 --- var icons clone.querySelectorAll(i.iconfont, i[class*icon], span.iconfont); icons.forEach(function(icon) { var classes icon.className || ; var text ; if (classes.includes(zhengque) || classes.includes(dui) || classes.includes(correct)) { text 正确; } else if (classes.includes(cuowu) || classes.includes(cuo) || classes.includes(cha) || classes.includes(wrong) || classes.includes(incorrect)) { text 错误; } else { text ?; } var textNode document.createTextNode(text); icon.parentNode.replaceChild(textNode, icon); }); // --- 步骤2处理选项区域使其前后及内部都换行 --- var choicesContainers clone.querySelectorAll(.choices, .ul-radio-group); choicesContainers.forEach(function(choices) { // 2.1 在选项组整体前面插入换行使题干和选项分开 var prevBr document.createTextNode(\n); choices.parentNode.insertBefore(prevBr, choices); // 2.2 在选项组整体后面插入换行使选项和后面的答案分开 var nextBr document.createTextNode(\n); if (choices.nextSibling) { choices.parentNode.insertBefore(nextBr, choices.nextSibling); } else { choices.parentNode.appendChild(nextBr); } // 2.3 在每个选项内部后面插入换行使选项彼此分行 var optionItems choices.children; // 直接子元素每个选项 for (var i optionItems.length - 1; i 0; i--) { var item optionItems[i]; var br document.createTextNode(\n); if (item.nextSibling) { choices.insertBefore(br, item.nextSibling); } else { choices.appendChild(br); } } }); return clone; } // 4. 提取每个错题的文本带图标转换和完整的换行 var result ; wrongQuestions.forEach(function(q, index) { var cloneWithText replaceIconsWithText(q); var content cloneWithText.innerText.trim(); result 错题 (index 1) \n; result content \n\n; }); // 5. 输出和复制 console.log( 提取到的所有错题完整换行 \n result); try { var textarea document.createElement(textarea); textarea.value result; textarea.style.position fixed; textarea.style.left -9999px; document.body.appendChild(textarea); textarea.select(); var success document.execCommand(copy); document.body.removeChild(textarea); if (success) { alert(成功提取 wrongQuestions.length 道错题\n内容已自动复制题干、选项、答案均已换行。); } else { alert(成功提取 wrongQuestions.length 道错题\n但自动复制失败请手动从控制台复制。); } } catch (e) { alert(成功提取 wrongQuestions.length 道错题\n请手动从控制台复制输出。); } })();希望能对你有帮助。同时感谢D老师和豆老师悉心指导。

相关新闻