又到了每学期一次的教学评价时间,去点选教务系统那些无聊的选项小框确实有点烦人。于是就有懒癌发作的程序员学长针对正方教务系统写了一段js小脚本来实现一键教学评价功能。只要将脚本存进书签,到时轻轻一点,看着那些烦人的操作一下子自动完成也是挺爽的。代码其实也挺简单,就是遍历各个评价的<input>并把评价值写入,同时由于教务系统限制,还要保证评价值至少有一个不同,最后再click保存按钮就ok了。但是这脚本一次点击一次只能完成一门课的评价,并不能一键完成全部,遇到某一学期课很多的情况就还是有点麻烦的。

于是我今晚研究了一下那个评价系统,在上面每完成一门课的评价就要向后台提交保存,然后后台就会自动给你下一门课的评价表单,直到你评价到最后一门课为止。这样优化的方法就简单了,只要对学长的脚本加个setInterval()定时执行,设置合适的执行周期,等下一个评价的表单加载完再重复同一操作,就可以一次评完所有课了。

修改完的代码如下,可以在评价页面调出控制台执行它,或者直接拖这个到书签栏,在评价页面即可一键评价。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var i = 0;
function evaluateATeacher() {
var obj = $('iframeautoheight').contentDocument.getElementsByTagName('select');
var submit = $('iframeautoheight').contentDocument.getElementById('Button1');
for (j = 1; j < obj.length; j++) {
obj[j].value = '较好';
}
var rid = Math.max(1, Math.floor(Math.random() * obj.length));
obj[rid].value = '一般';
submit.click();
i++;
if (i === obj[0].children.length) {
clearInterval(int);
};
}
var int = setInterval(evaluateATeacher, 2000);

如果遇上表单加载较慢的情况,则可以把执行周期延长;而其他学校的童鞋若有类似的需求也可以自己改改玩玩~