【web前端】僅使用JS做簡單的選擇題測評系統


【web前端】僅使用JS做簡單的選擇題測評系統

小鼠標丶 2017-09-03 15:24:51 7298 收藏 17
分類專欄: web前端學習
版權
包含內容:JS封裝表單,JS校驗表單
說是測評系統,感覺只能算是一個小小的Demo,很水,,沒有數據庫庫,,僅使用JS做簡單的選擇題測評系統

一、設計思路
表單封裝:
【1】由於采用JS封裝提交所以,不需要form標簽
【2】放置多個input標簽,作為輸入項
【3】編寫JS獲取輸入項,並通過get方式提交到另一個頁面

校驗表單(顯示結果)
【1】獲取get傳入的參數
【2】通過JS解析
【3】顯示到相應位置


二、參考源碼如下
request.html

<html>
<head>
<title>考試系統</title>
<meta http-equiv="accept-charset" charset="utf-8">
<script src="jquery.min.js"></script>
<script type="text/javascript">
function getjson() {
var radio = new Array();
for (var i = 1; i <= 5; i++) {//獲取radio的值
var radio_name = new String("radio_" + i);
radio[i - 1] = $('input:radio[name=' + radio_name + ']:checked').val()
}
for (var i = 1; i <= 2; i++) {//獲取checkbox的的輸入
var checkbox_name = new String("checkbox_" + i);
var chk_value = [];
$('input:checkbox[name=' + checkbox_name + ']:checked').each(function () {
chk_value.push($(this).val());
});
radio[i + 4] = "";//置為空
for (var j = 0; j < chk_value.length; j++) {
radio[i + 4] = radio[i + 4] + chk_value[j];
}
}
//數組轉json串
var json = JSON.stringify(radio);
return json;
}
function my_confirm() {
var json = getjson();
var msg = "您真的答案是:" + json + ",是否確認提交";
if (confirm(msg) == true) {
window.location.href = "result.html?radio=" + 5 + "checkbox=" + 2 + "&json=" + json;
} else {
return false;
}
}
$(function () {
var m = 1;
var s = 10;
setInterval(function () {
if (m >= 0) {
if (s < 10) {
$('#time').html("剩余時間:" + m + ':0' + s);
} else {
$('#time').html("剩余時間:" + m + ':' + s);
}
s--;
if (s < 0) {
s = 59;
m--;
}
if (m == 0 && s < 1) {
window.location.href = "result.html?radio=" + 5 + "checkbox=" + 2 + "&json=" + getjson();
}
}
}, 1000)
})
</script>
</head>
<body>
<h3 style="float: left">2016--2017學年期末測試題</h3>

<div id="time" style="color:red;float: right;margin: 12px 20px 0 0;padding: 0 0 0 0;font-size: xx-large"></div>

<br/><br/><br/>
<hr/>
<h4>一、單選題(每題12分,滿分60分)</h4>
1.當方法遇到異常又不知如何處理時,下列() 做法是正確的。<br>
<input type="radio" name="radio_1" value="A">A、捕獲異常<br>
<input type="radio" name="radio_1" value="B">B、拋出異常<br>
<input type="radio" name="radio_1" value="C">C、聲明異常<br>
<input type="radio" name="radio_1" value="D">D、嵌套異常<br>
2.下列說法錯誤的是() <br>
<input type="radio" name="radio_2" value="A">A、在java中一個類被聲明為final類型,表示該類不能被繼承。<br>
<input type="radio" name="radio_2" value="B">B、當一個對象被當作參數傳遞到一個方法后,此方法可改變這個對象的屬性,這叫引用傳遞。<br>
<input type="radio" name="radio_2" value="C">C、一個類不能既被聲明為 abstract,又被聲明為final。<br>
<input type="radio" name="radio_2" value="D">D、方法的覆蓋(Overriding)和重載(Overloading)是Java多態性的表現,他們沒有區別。<br>
3.下列創建數組的方法哪個是錯誤的? <br>
<input type="radio" name="radio_3" value="A">A、Date[] arr = new Date[5];<br>
<input type="radio" name="radio_3" value="B">B、Date arr[] = new Date[];<br>
<input type="radio" name="radio_3" value="C">C、Date arr[][] = new Date[4][5];<br>
<input type="radio" name="radio_3" value="D">D、Date arr[][] = new Date[4][];<br>
4.在讀文件Employee.txt 時,可以直接使用該文件作為參數的類是() <br>
<input type="radio" name="radio_4" value="A">A、BufferedReader<br>
<input type="radio" name="radio_4" value="B">B、FileInputStream<br>
<input type="radio" name="radio_4" value="C">C、DataOutputStream<br>
<input type="radio" name="radio_4" value="D">D、DataInputStream<br>
5.下列關於線程的說法中,錯誤的是? <br>
<input type="radio" name="radio_5" value="A">A、線程必須通過方法start() 來啟動。<br>
<input type="radio" name="radio_5" value="B">B、線程創建后,其優先級是可以改變的。<br>
<input type="radio" name="radio_5" value="C">C、實現Runnable接口或者從Thread類派生的線程類沒有區別。<br>
<input type="radio" name="radio_5" value="D">D、當對象用synchronized 修飾時,表明該對象在任一時刻只能由一個線程訪問。<br>
<br/>
<h4>二、多選題(每題20分,滿分40分,錯選、少選、多選不得分)</h4>
6.下列說法正確的是() <br>
<input type="checkbox" name="checkbox_1" value="A">A、在java中一個類被聲明為final類型,表示該類不能被繼承。<br>
<input type="checkbox" name="checkbox_1" value="B">B、當一個對象被當作參數傳遞到一個方法后,此方法可改變這個對象的屬性,這叫引用傳遞。<br>
<input type="checkbox" name="checkbox_1" value="C">C、一個類不能既被聲明為 abstract,又被聲明為final。<br>
<input type="checkbox" name="checkbox_1" value="D">D、方法的覆蓋(Overriding)和重載(Overloading)是Java多態性的表現,他們沒有區別。<br>
7.當方法遇到異常又不知如何處理時,下列() 做法是不正確的。<br>
<input type="checkbox" name="checkbox_2" value="A">A、捕獲異常<br>
<input type="checkbox" name="checkbox_2" value="B">B、拋出異常<br>
<input type="checkbox" name="checkbox_2" value="C">C、聲明異常<br>
<input type="checkbox" name="checkbox_2" value="D">D、嵌套異常<br>
<hr/>
<input type="button" onclick="my_confirm()" value="考試完成">
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108

result.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>考試結果</title>
<script src="jquery.min.js"></script>
<script>

//獲取url中的參數
function getUrlParam(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //構造一個含有目標參數的正則表達式對象
var r = window.location.search.substr(1).match(reg); //匹配目標參數
if (r != null) return unescape(r[2]);
return null; //返回參數值
}
function showResult() {
var answer = ["B", "D", "B", "B", "D", "ABC", "ACD"];//標准答案
var answer_score = [12, 12, 12, 12, 12, 20, 20];//答案的分數
var user_answer = JSON.parse(getUrlParam("json"));//獲取用戶答案
var radio_num = parseInt(getUrlParam("radio"));//獲取單選個數
var checkbox_num = parseInt(getUrlParam("checkbox"));//獲取多選個數
var radio_result = 0;//單選分數
var checkbox_result = 0;//多選分數
var radio_right_num = 0;//單選答對個數
var checkbox_right_num = 0;//多選答對個數
var result = 0;//總分數
var user_answer_result = new Array();//用戶沒到題的答題情況
for (var i = 0; i < user_answer.length; i++) {
if (user_answer[i] == answer[i]) {
if (i < radio_num) {
radio_result = radio_result + answer_score[i];
radio_right_num++;
} else {
checkbox_result = checkbox_result + answer_score[i];
checkbox_right_num++;
}
user_answer_result[i] = "正確";
} else {
user_answer_result[i] = "錯誤";
}
}
result = checkbox_result + radio_result;
//結果展示
var show_result1;
var show_result2;
var show_result3;
var show_result4;
var show_result5;
var show_result6;
show_result1 = "你的答案結果為:";
for (var i = 0; i < user_answer.length; i++) {
show_result1 = show_result1 + (i + 1) + ":" + user_answer_result[i] + ";&nbsp;";
}
show_result2 = "總題目個數:" + user_answer.length;
show_result3 = "答對單選題題目個數:" + radio_right_num + ";&nbsp;得分:" + radio_result;
show_result4 = "答對多選題題目個數:" + checkbox_right_num + ";&nbsp;得分:" + checkbox_result;
show_result5 = "答錯題目個數:" + (user_answer.length - radio_right_num - checkbox_right_num);
show_result6 = " 本次考試總成績為:" + result;
$("p#show_result1").html(show_result1);
$("p#show_result2").html(show_result2);
$("p#show_result3").html(show_result3);
$("p#show_result4").html(show_result4);
$("p#show_result5").html(show_result5);
$("p#show_result6").html(show_result6);
}
</script>
</head>
<body>
<h2>考試結束!</h2>
<hr/>
<input type="button" onclick="showResult()" value="查看結果">
<p id="show_result1">
<p>
<hr/>
<p id="show_result2"></p>
<p id="show_result3"></p>
<p id="show_result4"></p>
<p id="show_result5"></p>
<hr/>
<p id="show_result6"></p>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
結果如下圖:

————————————————
版權聲明:本文為CSDN博主「小鼠標丶」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/Small_Mouse0/java/article/details/77822737


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM