中国大学MOOC隐藏答案

添加一个切换答案按钮,点击可显示/隐藏答案

Nainstalovat skript?
Skript doporučený autorem

Mohlo by se vám také líbit 学习通/MOOC等 隐藏答案 Hide Answer.

Nainstalovat skript
// ==UserScript==
// @name         中国大学MOOC隐藏答案
// @namespace    https://github.com/lcandy2
// @version      1.4
// @description  添加一个切换答案按钮,点击可显示/隐藏答案
// @author       lcandy2
// @license      MIT
// @match        *://www.icourse163.org/learn/*
// @homepage     https://github.com/lcandy2/user.js
// @run-at       document-end
// @grant        none
// ==/UserScript==

function main() {
  const targetElement = document.querySelector('.u-learn-moduletitle');
  if (targetElement) {
    console.log('中国大学MOOC隐藏答案');
    console.log(targetElement);
    const toggleButton = document.createElement('a');
    toggleButton.className = 'j-backList backbtn f-fl f-fc9';
    toggleButton.id = 'hideAnswer';
    toggleButton.tabIndex = '-1';
    toggleButton.textContent = '隐藏答案';

    targetElement.appendChild(toggleButton);
    let radioInputs, itemsRight, itemsWrong, analysisInfo, scoreElements;

    let visibility = true;

    toggleButton.addEventListener('click', () => {

      if (visibility) {
        radioInputs = document.querySelectorAll('input[type="radio"]:checked');
        itemsRight = document.querySelectorAll('li.f-cb.checked.right');
        itemsWrong = document.querySelectorAll('li.f-cb.checked.wrong');
        analysisInfo = document.querySelectorAll('.analysisInfo');
        scoreElements = document.querySelectorAll('.score.f-fr');
      }

      visibility ? visibility = false : visibility = true;
      radioInputs.forEach(input => {
        visibility ? input.checked = true : input.checked = false;
      });
      itemsRight.forEach(item => {
        visibility ? item.className = 'li f-cb checked right' : item.className = 'f-cb';
      });
      itemsWrong.forEach(item => {
        visibility ? item.className = 'li f-cb checked wrong' : item.className = 'f-cb';
      });
      analysisInfo.forEach(element => {
        visibility ? element.style.display = 'block' : element.style.display = 'none';
      });
      scoreElements.forEach(element => {
        visibility ? element.style.display = 'block' : element.style.display = 'none';
      });
      toggleButton.textContent = visibility ? '隐藏答案' : '显示答案';
    });
  }
}

window.onload = main;