使用JS脚本编写HUST华中科技大学军理线上作业简易自动填充助手

# JS

〇、前情提要

今天在填写HUST华中科技大学军理线上作业的时候,看着满屏幕的选择题,我望了望手中的答案,突然想到,有没有先人已经做好了的脚本可以使用呢?

然后在油叉上面找了找发现了这个:
HUST华中科技大学军理线上作业简易自动填充助手 (greasyfork.org)

这是它的github页面:
HUST-MT-Helper

在尝试安装并使用之后,我发现并不能正常使用,主要原因是华中科技大学出版社的官网更新了,原有的域名和内容编排都发生了变化,于是我就开始尝试自己将其中的js代码进行改写。

具体改写过程在这里不再赘述,但是想要在这里记录一下自己所遇到的几个问题,以及学到的几个知识。

一、最大的感触

1.对于JavaScript的第一印象

对于感觉js有点像就是对于html的源代码进行检索,编辑,操作……本身就提供了相当多的接口来使用,使用起来相对轻松。

基本语法和C++基本一致,除了在函数声明上和另外一些我暂时看不懂的东西上有所区别,基本上是相同的。

2.弱类型语言

JavaScript是一个弱类型语言,在定义变量时,变量类型由其储存的内容决定。

其实结合后面的另外一点,感觉JavaScript在存储数据方面更像是存取指针,而不是引用具体的实例。

3.在JavaScript中数据类型有些不一样

和常规的语言相比,JavaScript的运行依赖于html文件,在很多操作上比起引用更像是指针。

比如这样的DOM结构:

1
2
<div id="a1"></div>
<div id="a2"></div>

我之前想的是这样交换:

1
2
3
4
5
6
var divs = document.querySelectorAll("div");
var temp;

temp = divs[0];
divs[0] = divs[1];
divs[1] = temp;

但是实际上这将不进行交换。原因如下:

![[js-将nodeList像数组一样进行操作]]

4.得利于Edge提供的良好的开发者工具,debug十分地便捷

可以将js挂载到网页中,然后使用edge开发者工具对代码进行debug调试

最大的优点是数据类型会以悬浮窗的形式显示出来,而数据的具体数据及其变化情况会以旁批的形式标注出来。

二、其他的一些知识点

1. 获取标签元素data-*属性值的方法

在JavaScript 如果直接使用 a.data-id 会被理解为两数相减a.data - id
这个时候就需要换一种读取方式。

![[js-获取标签元素data-xxx属性值的方法]]

2. radio表单结构

![[js-radio表单结构]]

3.js 里面的函数构造

![[js-函数构造]]