Greasy Fork

来自缓存

Greasy Fork is available in English.

速通NUIST学习通教评

新版教评令人窒息,默认给所有老师全10分,大家都开心(想改分的改源代码90行)

当前为 2024-01-04 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name        速通NUIST学习通教评
// @namespace    http://tampermonkey.net/
// @version      1.1
// @description  新版教评令人窒息,默认给所有老师全10分,大家都开心(想改分的改源代码90行)
// @author        咩咩怪!
// @match      *://i.chaoxing.com/*
// @match      *://i.chaoxing.com/*
// @grant        none
// @license MIT
// ==/UserScript==



$("body").append(`<div class="float-window">
  <!-- 悬浮窗的内容 -->
  <h3>打开到教评第一页</h3><br><h3>然后点开始运行</h3>
  <button id="anniu" class="float-button" onclick="changeParamAndText()">开始运行</button>
</div>
`);

$("head").append(`<style>
  /* 定义悬浮窗的样式 */
  .float-window {
    position: fixed;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 120px;
    height: 80px;
    background-color: lightblue;
    border: 1px solid black;
    text-align: center;
    padding: 10px;
	z-index: 9999;
  }

  /* 定义按钮的样式 */
  .float-button {
    margin-top: 10px;
    width: 100px;
    height: 40px;
    font-size: 16px;
    cursor: pointer;
	z-index: 9999;
  }
</style>`);

	// 定义一个变量,初始值为1
	var param = 0;

	// 定义一个函数,用来改变参数和按钮的文本
	function changeParamAndText() {
    // 切换参数的值,如果是1就变成0,如果是0就变成1
    param = param === 1 ? 0 : 1;

    // 获取id为anniu的按钮元素
    var button = document.getElementById("anniu");

    // 根据参数的值来改变按钮的文本
    if (param === 1) {
      button.innerHTML = "停止运行";
	  setTimeout(() => {
      start_main();
      }, 500);

    } else {
      button.innerHTML = "开始运行";
    }

    // 打印参数的值
    console.log(param);
}


// 定义一个延时函数,返回一个 Promise 对象
const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));

// 定义一个 putdefen 函数,使用 async/await 语法
async function putdefen() {
  await delay(500);
  console.log("进入点击函数");
  // 获取所有类名为 blueInp dafen 的元素
  const elements = document.getElementById("frame_content").contentWindow.document.getElementsByClassName("blueInp dafen");
  // 使用 for...of 循环遍历元素列表
  for (const element of elements) {
    // 设置元素的 value 属性为 10
    element.value = 10;//改分值在这里★★★
  }
  // 获取类名为 botBtnBox 的元素
  await delay(200);
  const box = document.getElementById("frame_content").contentWindow.document.querySelector(".botBtnBox");
  // 如果 box 元素没有子节点,或者只有一个子节点,跳过这一步
  try{
  if (box.children.length < 2) return;
  // 获取 box 元素的第二个子节点
  const button = box.children[1];
  // 模拟用户点击元素
  button.click();
  }catch(error){console.log("是我想的那样");console.log(error.name + ": " + error.message);}
  // 等待 300 毫秒
  await delay(300);
  // 获取类名为 layui-layer-btn0 的元素
  const button2 = document.getElementById("frame_content").contentWindow.document.querySelector(".layui-layer-btn0");
  // 模拟用户点击元素
  button2.click();
  // 等待 100 毫秒
  await delay(500);
  // 获取 id 名字为 pageindex 的节点
  let pageindex = document.getElementById("frame_content").contentWindow.document.getElementById("pageindex");
  // 获取 pageindex 节点的所有子节点
  let children = pageindex.children;
  // 使用 for...of 循环遍历子节点列表
  for (const child of children) {
  // 如果子节点的 innerHTML 在 "1" 到 "9" 之间,表示是页码节点
  if (child.innerHTML >= "1" && child.innerHTML <= "9") {
    if (Number(child.innerHTML) === pageNum) {
      // 模拟用户点击子节点
	  console.log("点击函数回到当前页",Number(child.innerHTML))
      child.click();
      // 跳出 for 循环
	  await delay(500);
      break;
    }
  }
}

}

// 定义一个主函数,使用 async/await 语法
async function start_main() {
  console.log("进入主函数")
  // 定义一个变量,表示是否还有 fontColor02 节点对象存在
  var hasFontColor02 = true;
  // 定义一个变量,表示是否需要换页
  var needChangePage = false;
  // 定义一个变量,表示当前的页码
  var pageNum = 0;
  // 定义一个变量,表示当前页的节点对象
  var curPage = null;
  // 使用 while 循环,当还有 fontColor02 节点对象存在时,继续循环
  var nummnum=1
  while (true) {
	await delay(100);
	if (param === 1){
    // 获取 id 名字为 pageindex 的节点
	console.log("第",nummnum,"次循环")
	nummnum=nummnum+1
	await delay(2000);
    let pageindex = document.getElementById("frame_content").contentWindow.document.getElementById("pageindex");
    // 获取 pageindex 节点的所有子节点
    let children = pageindex.children;
    // 使用 for...of 循环遍历子节点列表
    for (const child of children) {
	  console.log("进入确定页码");
      // 如果子节点的 innerHTML 在 "1" 到 "9" 之间,表示是页码节点
      if (child.innerHTML >= "1" && child.innerHTML <= "9") {
        // 获取子节点的类名
        let className = child.className;
        // 如果类名包含 cur,表示是当前页的节点
        if (className.includes("cur")) {
          // 把子节点赋值给 curPage
          curPage = child;
		  console.log(child.innerHTML);
		  // 获取子节点的 innerHTML,转换为数字
          pageNum = Number(child.innerHTML);
		  console.log("当前页码为:",Number(child.innerHTML))
        }
	  }
    }


	// 检查是否还有待评价的 fontColor02 节点
    hasFontColor02 = false;
    // 再次获取所有类名为 fontColor02 的元素
    const elements2 = document.getElementById("frame_content").contentWindow.document.getElementsByClassName("fontColor02");
    // 使用 for...of 循环遍历元素列表
    for (const element of elements2) {
	  console.log("检查是否还有待评价的,决定是否换页");
      // 获取元素的文字内容,包括 HTML 标签
      const text = element.innerHTML;
      // 如果文字是“待评价”,表示还有待评价的 fontColor02 节点
      if (text === "待评价") {
        // 设置 hasFontColor02 为 true
		console.log("还有待评价的");
		hasFontColor02 = true;
		needChangePage = false;
        // 跳出 for 循环
        break;
      }
    }
    // 如果没有待评价的 fontColor02 节点,设置 needChangePage 为 true,表示需要换页
    if (!hasFontColor02) {
      needChangePage = true;
	  console.log("该换页了")
    }


    if (needChangePage) {
		console.log("进入换页");
		let pageindex = document.getElementById("frame_content").contentWindow.document.getElementById("pageindex");
		// 获取 pageindex 节点的所有子节点
		let children = pageindex.children;
		// 使用 for...of 循环遍历子节点列表
        for (const child of children) {
		// 如果子节点的 innerHTML 在 "1" 到 "9" 之间,表示是页码节点
          if (child.innerHTML >= "1" && child.innerHTML <= "9") {
          // 如果等于 pageNum+1,表示是要更换的页码
            if (Number(child.innerHTML) === pageNum+1) {
            // 模拟用户点击子节点
			console.log("要换成",pageNum+1)
            child.click();
            // 跳出循环
			pageNum=pageNum+1;
            break;
            }
          }
        }
      }

    // 获取所有类名为 fontColor02 的元素
    const elements = document.getElementById("frame_content").contentWindow.document.getElementsByClassName("fontColor02");
    // 使用 for...of 循环遍历元素列表
    for (const element of elements) {
	  console.log("检查是否是待评价的,是就点击");
      // 获取元素的文字内容,包括 HTML 标签
      const text = element.innerHTML;
      // 如果文字是“待评价”,则执行以下操作
      if (text === "待评价") {

        // 调用点击函数
        element.click();
		await putdefen();
		await delay(1000);
		break;
      }
    }

  }else{break;}
  }console.log("整个函数结束了")
}

var image1 = document.getElementById("anniu");
image1.onclick = changeParamAndText;