考题的修改

原来的样子如下:

 

 

点击题干文本后如下:

 

 

点击取消后恢复原样,点击提交后提交数据。


点击“详细”按钮后显示相关参考答案和分值:

 

 

点击一个参考答案文本后如下(点击分值文本同样显示):

 

 

首先,一道考题的Dom结构是这样的:

 

 

 

看起来超混乱的,XD

 

点击文本->输入框,以及提交、取消按钮的代码如下(jQuery)

 

 

 

  从第61行开始判断要修改哪个内容(题干?参考答案?分值?),然后根据实际Dom结构的不同,获取考题id的方式也不同。因为一道考题会有多个考空(参考答案,分值),所以利用id值保存以及获取考题id,考空id以及是考题还是考空,id值的保存形式类似:answer_T11041700002_3。

 

  这些js代码非常依赖于Dom结构,后者更改了,前者也要进行相应的更改。随着代码越来越复杂,忘记更改的危险也就越大。不过也不要紧,造成的错误很容易通过调试器发现。

 

  另外,对js的面向对象设计方法不是很了解。就拿当前例子来说,点击一个span中的文字,就变换为一个文本框和提交、取消按钮,文本框内容是原来的文字,点击取消恢复成原来的文字,点击提交可以执行一个function。说实话,我不太想在每个需要实现类似功能的地方都把这些代码写一遍,而是把这些功能封转成一个组件或者对象。不过目前我不清楚怎么实现。

 

  第70-74行是创建文本框,提交和取消按钮,并且替换掉原来的文字,文本框的值为原来的文字。

 

  第76、83行分别定义取消、提交按钮的点击事件。

 

  第78行为取消事件继续派发,79行是恢复总容器的点击事件,因为在第104行取消了总容器的点击事件,如果不取消,那么当按下“取消”按钮时,总容器的click函数也会执行,即使有了78行的代码也一样(这样78行还有啥用啊?不懂)。

 

  第80行为清空文本框以及两个按钮,恢复成原来的文本。是“原来的文本”,而不是文本框修改后的文本。原来的文本在70行事先保存了。

  以上代码适用于修改题干、参考答案和分值,修改源文件的函数打算另外定义,因为要生成<select>或者文件上传表单,比较复杂,以后再弄。

 

  绑定题干、参考答案和分值的点击事件:

 

 

  调试是用chrome的调试器进行的,该调试器可以设置断点,以便跟踪相关变量的值,按F8可以执行下一步,拥有了调试程序所需要的基本功能。

  MyEclipse中,F8也是执行下一步,F5、F6、F7目前没用过,网上说分别是跳入方法、跳过方法、从方法中跳出。

 

  通过开发这些东西,目前我深深地肯定,懂得调试真的很很很重要。如果不能实时跟踪相关变量值,就很容易会被莫名其妙的问题困扰很长时间。如果只用alert或System.out.println这些控制台输出方法跟踪变量值,那么这些方法的编写与删除肯定会花费大量的时间。所以,还是利用调试器设断点、看变量值这种调试方式比较划算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值