现在的位置: 首页 > 综合 > 正文

jQuery试卷自动排版系统

2012年05月30日 ⁄ 综合 ⁄ 共 4318字 ⁄ 字号 评论关闭

需求

根据提供的试卷题目(是一个干净的只有“数据”的HTML网页)生成一份多页的试卷,用户能执行翻页、具有答题时间限制,展示给用户的试卷中题目需要占用尽量少的空间(比如选择题中把两条较短的选项由两行合并到一行)、同一道题目不要跨页面显示以方便答题者,管理员能够改变试卷的样式(字体、颜色、行距、页面边距,像字处理软件一样……),题目之间可以插入一些说明性的文字(比如告知答题者作答的须知等等)。题目提干、选择题的选项、说明文字可以包含多媒体信息(文字、图片、列表、表格、视频等等……)。选择题选项数目不限、单选多选不限。翻页要有可订制的动画效果

提供的试卷样板类似如下(Input):

01 <ol id="olThePaper">
02     <div class="Desc">选择题:说明文字。说明文字。说明文字。说明文字。说明文字。说明文字。说明文字。说明文字。说明文字。说明文字。说明文字。说明文字。说明文字。说明文字。</div>
03     <div class="Problem" id="1">
04         <li>1.你认为怎样的老师是好老师?</li>
05         <div class="Choices">
06             <label><input type="radio" name="prob1" value="A" />和学生平等相处,能全面满足学生各种需要</label>
07             <label><input type="radio" name="prob1" value="B" />所在教学班的成绩优于其他平行班</label>
08             <label><input type="radio" name="prob1" value="C" />严格管理学生、所带的班级班风良好</label>
09             <label><input type="radio" name="prob1" value="D" />父母般地关心学生的生活和情绪状态</label>
10         </div>
11     </div>
12     <div class="Problem" id="2">
13         <li>2.一位有15年教龄的英语教师,教了多年高三,可谓学校的核心骨干。一次接受邀请到外校介绍教学经验,台下有老师发表了观点并问到几个英语教法发面的问题,一下子把她给卡住了。这是因为</li>
14         <div class="Choices">
15             <label><input type="radio" name="prob2" value="A" />她最近工作太累,注意力不够集中。</label>
16             <label><input type="radio" name="prob2" value="B" />提问老师的观点和她的有很大不同。</label>
17             <label><input type="radio" name="prob2" value="C" />由于长时间在教学一线拼搏,她对教学理论问题的关注度不高。</label>
18             <label><input type="radio" name="prob2" value="D" />对学科教学的归纳和思考少,一时加工不过来。</label>
19         </div>
20     </div>
21     <div class="Problem" id="3">
22         <li>3.哪张图片最好看?</li>
23         <div class="Choices">
24             <label><input type="radio" name="prob3" value="A" />这一张<img src="img1.png" height="300px"width="400px" alt="img1"/>好看。</label>
25             <label><input type="radio" name="prob3" value="B" />这一张<img src="img2.png" height="300px"width="400px" alt="img2"/>好看。</label>
26             <label><input type="radio" name="prob3" value="C" />这一张<img src="img3.png" height="300px"width="400px" alt="img3"/>好看。</label>
27             <label><input type="radio" name="prob3" value="D" />这一张<img src="img4.png" height="300px"width="400px" alt="img4"/>好看。</label>
28             <label><input type="radio" name="prob3" value="E" />不知道。</label>
29         </div>
30     </div>
31     <div class="Desc">填空题和选择题:一大堆的说明文字。一大堆的说明文字。一大堆的说明文字。一大堆的说明文字。一大堆的说明文字。</div>
32     <div class="Problem" id="4">
33         <li>4.床前明月光,<input type="text" name="prob4" /></li>
34     </div>
35     <div class="Problem" id="5">
36         <li>5.你认为怎样的老师是好老师?</li>
37         <div class="Choices">
38             <label><input type="checkbox" name="prob6" value="D" />和</label>
39             <label><input type="checkbox" name="prob6" value="A" />所</label>
40             <label><input type="checkbox" name="prob6" value="B" />严</label>
41             <label><input type="checkbox" name="prob6" value="C" />父</label>
42             <label><input type="checkbox" name="prob6" value="E" />和班的成绩班的成绩班的成绩班的成绩班的成绩</label>
43             <label><input type="checkbox" name="prob6" value="F" />所班的成绩班的成绩班的成绩</label>
44             <label><input type="checkbox" name="prob6" value="G" />严班的班的成绩班的成绩班的成绩班的成绩</label>
45             <label><input type="checkbox" name="prob6" value="H" />啊</label>
46         </div>
47     </div>
48 </ol>

思路

面对这种需求该怎么办呢?使用JavaScript了,看来。后来决定用jQuery,Aptana作IDE(虽然jQuery支持库在Windows上死活装不上去,换了个OS就好了,奇怪),格式么就用CSS了。

具体步骤:

  1. 导入试卷题目HTML
  2. 对所有选择题进行排版,把一行划分为四个位置,使选项尽量适应一个位置、两个位置或四个位置(也就是一行四项、一行两项或者一行一项的效果)
  3. 对所有题目进行分页

思路还是清晰的,但是由于浏览器众多,还是比较麻烦的,并且我是新手,没接触过jQuery之前……

实现

页面文件(和例子不同,但是格式一样的)

 
001 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
002 <html xmlns="http://www.w3.org/1999/xhtml">
003     <head>
004         <title>No title...</title>
005         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
006         <script language="JavaScript" src="lib/jquery/jquery-1.4.2.js" type="text/javascript"></script>
007         <script language="JavaScript" src="lib/countdown/jquery.countdown.pack.js" type="text/javascript"></script>
008         <script language="JavaScript" src="TestPaperProcessor.js" type="text/javascript"></script>
009         <link href="style.css" rel="stylesheet" type="text/css" />
010     </head>
011     <body>
012         <div id="divToolbar">
013             <div id="divPrev">PrevPage</div>
014             <div id="divNext">NextPage</div>

抱歉!评论已关闭.