// ==UserScript== // @name 联大学堂课程作业自动答题 // @namespace http://tampermonkey.net/ // @version 1.1 // @description 自动勾选所有答案(支持单选A-E和多选) // @match https://*.jxjypt.cn/paper/start* // @grant none // @run-at document-end // ==/UserScript== (function() { 'use strict'; // 等待 jQuery 加载(页面自带) function waitForJQuery(callback) { if (window.jQuery) { callback(window.jQuery); } else { setTimeout(() => waitForJQuery(callback), 100); } } waitForJQuery(function($) { // 1. 自动勾选所有答案 function selectAnswers() { let successCount = 0; let failCount = 0; $('.m-question').each(function(index) { const $question = $(this); // 从隐藏解析区获取答案(如 C 或 ABCDE) const answerElem = $question.find('.solution .right'); if (!answerElem.length) { console.log(`第${index+1}题:未找到答案区域`); failCount++; return; } const answerText = answerElem.text().trim(); if (!answerText) { console.log(`第${index+1}题:答案为空`); failCount++; return; } // 匹配所有 A-E 的字母(支持单选和多选) const matches = answerText.match(/[A-E]/gi); if (!matches || matches.length === 0) { console.log(`第${index+1}题:答案格式不正确 (${answerText})`); failCount++; return; } // 转换为大写并去重(保持顺序) const letters = [...new Set(matches.map(m => m.toUpperCase()))]; // 遍历每个答案字母,点击对应选项 let allFound = true; for (const letter of letters) { const $option = $question.find(`dd[data-value="${letter}"]`); if (!$option.length) { console.log(`第${index+1}题:未找到选项 ${letter}`); allFound = false; continue; } $option.click(); $option[0].dispatchEvent(new Event('click', { bubbles: true })); console.log(`✅ 第${index+1}题 已选择 ${letter}`); } if (allFound) { successCount++; } else { failCount++; } }); console.log(`答题完成:成功 ${successCount} 题,失败 ${failCount} 题`); } // 主流程:延迟执行,确保页面完全加载 setTimeout(() => { selectAnswers(); }, 1000); }); })();