// ==UserScript== // @name rate shower // @namespace http://tampermonkey.net/ // @version 0.1 // @description nowcoder.com通过率与通过人数切换 // @author Ygy // @match https://ac.nowcoder.com/acm/contest/* // @icon https://www.google.com/s2/favicons?sz=64&domain=nowcoder.com // @require https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js // @grant none // @license MIT // @downloadURL https://update.greasyfork.icu/scripts/447352/rate%20shower.user.js // @updateURL https://update.greasyfork.icu/scripts/447352/rate%20shower.meta.js // ==/UserScript== (function() { 'use strict'; $(window).on('load',function () { let $tableHeadTrs = $(".table-hover>thead>tr>th") let $tableBodyTrs = $(".table-hover>tbody>tr") let $fixedMenu = $(".fixed-menu>ul") // $tableHead.append($('通过率')) let $a1 = $('') $a1.css('background','url("")') // let $a1 = $('') let $li1 = $('
  • ').append($a1) $fixedMenu.append($li1) let flag = 1 let columnIndex = 2 let oriList = [] let rateList = [] //获取通过率列号 columnIndex = getColumnIndex() console.log(columnIndex) //生成列表 rateListGen(oriList, rateList) console.log(oriList) console.log(rateList) //绑定点击事件 $("#a1").on('click', change) function change() { console.log("I'm clicked....") $tableBodyTrs.each(function (index, element) { let $tableBodyTds = $(element).children('td') // console.log($tableBodyTds[2].textContent) if (flag < 0) { $tableBodyTds[columnIndex].innerHTML = oriList[index] } else { $tableBodyTds[columnIndex].innerHTML = rateList[index] } }) flag *= -1 } //生成两列表,原始与计算后 function rateListGen(li1, li2) { $tableBodyTrs.each(function (index, element) { let $tableBodyTds = $(element).children('td') // console.log($tableBodyTds[2].textContent) let str = $tableBodyTds[columnIndex].textContent li1.push(str) // console.log(toPercent(rateCal(str))) li2.push(toPercent(rateCal(str))) }) } //计算比率 function rateCal(str) { let nums = str.split('/'); if (nums.length !== 2) return 'error!' let num1 = parseInt(nums[0]) let num2 = parseInt(nums[1]) if (num2 === 0) return 0 else return num1 / num2 } //转成百分数 function toPercent(point) { let str = Number(point * 100).toFixed(2); str += "%"; return str; } //获取通过率所在列 function getColumnIndex() { let idx = 2 $tableHeadTrs.each(function (index, element) { let str = element.innerText if ("通过率"===str){ idx = index return false } }) return idx } }); // Your code here... })();