Last active
January 4, 2016 08:39
-
-
Save jeremy5189/8596557 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* -------------------------------- | |
* NTUST 學生資訊系統 平均 GPA 計算 | |
* | |
* 作者:Eric Ping | |
* 更新:Jeremy Yen | |
* | |
* Change Log | |
* - 修正「二次退選」所造成之問題 | |
* - 增加 B99 百分制成績支援 | |
* - 使用正規表達式判斷中文與數字 | |
* - 修正對 Firefox 的支援 | |
* | |
* User Manual | |
* - 請開啟學生資訊系統內之檢視成績 | |
* 頁面,並點選 「NTUST GPA」之 | |
* 書籤即可使用 (使用下方版本) | |
* - 百分制成績所得結果為平均成績, | |
* 請自行查表換算 GPA 值 | |
* | |
* Disclaimer | |
* - 本程式之計算結果僅供參考,實際 | |
* 成績以學校公佈為準。 | |
* | |
* -------------------------------- | |
*/ | |
var table = document.getElementById('Datagrid4'); | |
var tbody = table.getElementsByTagName('tbody')[0]; | |
var tr = tbody.getElementsByTagName('tr'); | |
var A = ['A+', 'A', 'A-', 'B+', 'B', 'B-', 'C+', 'C', 'C-', 'D', 'E', 'X']; | |
var B = [4.0, 4.0, 3.7, 3.3, 3.0, 2.7, 2.3, 2.0, 1.7, 1.0, 0.0, 0.0]; | |
var sum = 0, credits = 0; | |
for(var i = 1; i < tr.length; i++) | |
{ | |
var td = tr[i].getElementsByTagName('td'); | |
for(var j = 3; j < td.length-1; j += 2 ) | |
{ | |
var score = td[j+1].textContent.trim() || td[j+1].innerText; | |
var credit = parseInt(td[j].textContent.trim() || td[j].innerText); | |
if( /[\u4e00-\u9fa5]/.test(score) ) // 跳過中文 | |
continue; | |
else if( /^[0-9]*$/.test(score) ) // 百分制 | |
sum += parseInt(score) *credit; | |
else // 等第制 | |
sum += B[A.indexOf(score)] * credit; | |
credits += credit; | |
} | |
} | |
alert("平均分數或GPA: " + Math.round( sum / credits * 100 ) / 100); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 使用方法:將下列程式碼貼入網址列或加入書籤內,即可使用 | |
// Chrome 貼入網址列後,請手動在最前方加上「javascript:」(不含引號) | |
javascript:(function()%7Bvar table%3Ddocument.getElementById(%27Datagrid4%27)%3Bvar tbody%3Dtable.getElementsByTagName(%27tbody%27)%5B0%5D%3Bvar tr%3Dtbody.getElementsByTagName(%27tr%27)%3Bvar A%3D%5B%27A%2B%27,%27A%27,%27A-%27,%27B%2B%27,%27B%27,%27B-%27,%27C%2B%27,%27C%27,%27C-%27,%27D%27,%27E%27,%27X%27%5D%3Bvar B%3D%5B4.0,4.0,3.7,3.3,3.0,2.7,2.3,2.0,1.7,1.0,0.0,0.0%5D%3Bvar sum%3D0,credits%3D0%3Bfor(var i%3D1%3Bi<tr.length%3Bi%2B%2B)%7Bvar td%3Dtr%5Bi%5D.getElementsByTagName(%27td%27)%3Bfor(var j%3D3%3Bj<td.length-1%3Bj%2B%3D2)%7Bvar score%3Dtd%5Bj%2B1%5D.innerText%3Bif(/%5B%5Cu4e00-%5Cu9fa5%5D/.test(score))continue%3Belse if(/%5E%5B0-9%5D*%24/.test(score))sum%2B%3DparseInt(score)*parseInt(td%5Bj%5D.innerText)%3Belse sum%2B%3DB%5BA.indexOf(score)%5D*parseInt(td%5Bj%5D.innerText)%3Bcredits%2B%3DparseInt(td%5Bj%5D.innerText)%3B%7D%7Dalert("平均分數或GPA: "%2BMath.round(sum/credits*100)/100)%3B%7D)()%3B | |
// 令網頁內容可編輯 | |
javascript:(function()%7Bdocument.body.contentEditable%3D'true'%3Bdocument.designMode%3D'on'%3Bvoid(0)%7D)() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment