在考試系統中難免會有倒計時提示,我們第一想到的是用js的settimeout
但是發現一個問題如果頁面刷新則重新倒計時,以下是我的解決方案:
1.用settimeout每隔一秒觸發一次
2.用cookies在cookies中讀取剩余時間
以下是實現代碼:
js部分:
1 <script language="javascript" type = "text/javascript">
2 function GetCookieByName(name) {
3 //獲取cookie字符串
4 var strCookie = document.cookie;
5 //將多cookie切割為多個名/值對
6 var arrCookie = strCookie.split("; ");
7 var userId;
8 //遍歷cookie數組,處理每個cookie對
9 for (var i = 0; i < arrCookie.length; i++) {
10 var arr = arrCookie[i].split("=");
11 //找到名稱為name的cookie,並返回它的值
12 if (name == arr[0]) {
13 userId = arr[1];
14 break;
15 }
16 }
17 return userId;
18 }
19 function Change(m, s) {
20 s = s - 1;
21 if (s < 0) {
22 s = 60 + s;
23 m = m - 1;
24 }
25 if (m == 10 && s == 0) {
26 alert("離答題結束還有10分鍾,請盡快完成題目!");
27 }
28 document.getElementById("divtime").innerHTML = m + "分" + s + "秒";
29 document.cookie = "m=" + m;
30 document.cookie = "s=" + s;
31 setTimeout(function() {
32 Change(m,s);
33 }, 1000);
34 }
35 window.onload = function() {
36 //SetCookie(20, 20);
37 var m = GetCookieByName("m");
38 var s = GetCookieByName("s");
39 Change(m, s);
40
41 }
42 </script>
.net后台部分:
在后台代碼中設置cookies值
Response.Cookies["m"].Value = strs[0];
Response.Cookies["s"].Value = strs[1];