计算当前学期平均绩点

计算当前学期平均绩点,适用于湖北工业大学

// ==UserScript==
// @name         计算当前学期平均绩点
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  计算当前学期平均绩点,适用于湖北工业大学
// @author       摘叶飞镖
// @match        http://run.hbut.edu.cn/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=hbut.edu.cn
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    // Your code here...

    const innerFrame = document.getElementsByTagName("iframe")._mainFrame;

    function calAveGPA() {
        let innerDocument = innerFrame.contentWindow.document;
        let mainContent = innerDocument.getElementById("mainContent");
        let tableList = innerDocument.getElementsByClassName("table-list")[0];
        let target = innerDocument.getElementById("res");
        if (target == null) {
            target = document.createElement("p");
            mainContent.insertBefore(target, tableList);
            target.id = "res";
        }

        let sumGPAMultipleCredit = 0;
        let sumCredit = 0;
        let i = 0;
        let tbody = innerDocument.getElementsByTagName("tbody")[0];

        tbody.childNodes.forEach(child => {
            if (child.tagName == "TR") {
                if (i == 0) {
                    i++;
                } else {
                    let gpa = child.childNodes[7].innerHTML.trim();
                    let credit = child.childNodes[9].innerHTML.trim();
                    if (gpa != "") {
                        sumCredit += parseFloat(credit);
                        sumGPAMultipleCredit += parseFloat(credit) * parseFloat(gpa);
                    }
                }
            }
        });
        let averageGPA = sumGPAMultipleCredit / sumCredit;
        target.innerHTML = "当前学期平均绩点:" + averageGPA.toFixed(4);
    }

    window.setInterval(function() {
        if (innerFrame.contentWindow.location.href == "http://run.hbut.edu.cn/StuGrade/Index" && innerFrame.contentWindow.document.readyState == "complete") {
            calAveGPA();
        }
    }, 1000);

})();
长期地址
遇到问题?请前往 GitHub 提 Issues。