日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

考试系统—— 刷新页面 考试剩余时间不重新开始

發(fā)布時間:2024/4/17 windows 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 考试系统—— 刷新页面 考试剩余时间不重新开始 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

查了些資料整理如下:

JavaScript倒計時,實現(xiàn)起來不難,但是一刷新往往就重新計算了,如果要實現(xiàn)刷新不重計該如何做呢?

有這么幾種思路,

? ? ?方法1:cookie

《JS寫的在線考試倒計時,Cookie防止刷新》 鏈接地址:https://my.oschina.net/u/2358721/blog/464652

代碼:

$(function() {var _minute = parseInt("${exampaper.paperTime }");var _expiresHours = _minute * 60 * 1000;if(!hasSetCookie()){addCookie("${examinee.examineeId}", _expiresHours, _expiresHours);} settime($("#remainTime")); });function hasSetCookie(){var strCookie = document.cookie;var arrCookie = strCookie.split("; ");for (var i = 0; i < arrCookie.length; i++) {var arr = arrCookie[i].split("=");if (arr[0] == "${examinee.examineeId}") {return true;}};return false;}//開始倒計時function settime(remainTime) {var _time = getCookieValue("871d31bacfd4451484c5f70f8860c2a9");var _countdown = parseInt(getCookieValue("${examinee.examineeId}")) / 1000;if (_countdown <= 0) {alert("考試時間到!");endExam();} else {var _second = _countdown % 60;var _minute = parseInt(_countdown / 60) % 60;var _hour = parseInt(parseInt(_countdown / 60) / 60);if (_hour < 10)_hour = "0" + _hour.toString();if (_second < 10)_second = "0" + _second.toString();if (_minute < 10)_minute = "0" + _minute.toString();remainTime.html(_hour + ":" + _minute + ":" + _second);_countdown--;editCookie("${examinee.examineeId}", _countdown * 1000, _countdown * 1000);}//每1000毫秒執(zhí)行一次setTimeout(function() {settime(remainTime);}, 1000);};//時添加cookiefunction addCookie(name, value, expiresHours) {var cookieString = name + "=" + escape(value); //escape() 函數(shù)可對字符串進行編碼,這樣就可以在所有的計算機上讀取該字符串。//判斷是否設置過期時間,0代表關閉瀏覽器時失效if (expiresHours > 0) {var date = new Date();date.setTime(date.getTime() + expiresHours * 1000);cookieString = cookieString + ";expires=" + date.toUTCString();}document.cookie = cookieString;}//修改cookie的值function editCookie(name, value, expiresHours) {var cookieString = name + "=" + escape(value);if (expiresHours > 0) {var date = new Date();date.setTime(date.getTime() + expiresHours * 1000); //單位是毫秒cookieString = cookieString + ";expires=" + date.toGMTString();}document.cookie = cookieString;}//根據(jù)名字獲取cookie的值function getCookieValue(name) {var strCookie = document.cookie;var arrCookie = strCookie.split("; ");for (var i = 0; i < arrCookie.length; i++) {var arr = arrCookie[i].split("=");if (arr[0] == name) {return unescape(arr[1]);break;} else {continue;};};} View Code
  • 用settimeout每隔一秒觸發(fā)一次
  • 用cookies在cookies中讀取剩余時間
  • 代碼:
<script language="javascript" type = "text/javascript">function GetCookieByName(name) {//獲取cookie字符串 var strCookie = document.cookie;//將多cookie切割為多個名/值對 var arrCookie = strCookie.split("; ");var userId;//遍歷cookie數(shù)組,處理每個cookie對 for (var i = 0; i < arrCookie.length; i++) {var arr = arrCookie[i].split("=");//找到名稱為name的cookie,并返回它的值 if (name == arr[0]) {userId = arr[1];break;}}return userId; }function Change(m, s) {s = s - 1;if (s < 0) {s = 60 + s;m = m - 1;}if (m == 10 && s == 0) {alert("離答題結束還有10分鐘,請盡快完成題目!");}document.getElementById("divtime").innerHTML = m + "分" + s + "秒";document.cookie = "m=" + m;document.cookie = "s=" + s;setTimeout(function() {Change(m,s);}, 1000);}window.onload = function() {//SetCookie(20, 20);var m = GetCookieByName("m");var s = GetCookieByName("s");Change(m, s);}</script> View Code

.net后臺部分:

在后臺代碼中設置cookies值

Response.Cookies["m"].Value = strs[0]; Response.Cookies["s"].Value = strs[1];

?

? ? ?方法2:本地緩存

也可以和服務器時間同步,把計時器讀取放在服務器端,考慮到是在線考試,實際用的較少

???? 方法3:window.name (此方法已驗證)

原文鏈接:http://www.jb51.net/article/90204.htm

<span style="font-family:KaiTi_GB2312;font-size:18px;"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type"content="text/html; charset=gb2312" /> <title>前端開發(fā)http:write.blog.csdn.net/postlist</title> </head><body> <form> <SCRIPT LANGUAGE="JavaScript"><!--var maxtime;if(window.name==''){maxtime = 1*60;}else{maxtime = window.name;}function CountDown(){if(maxtime>=0){minutes = Math.floor(maxtime/60); seconds = Math.floor(maxtime%60);msg = "距離考試結束還有"+minutes+""+seconds+"";document.all["timer"].innerHTML = msg;if(maxtime == 5*60) alert('注意,還有5分鐘!');--maxtime;window.name = maxtime;}else{clearInterval(timer);alert("考試時間到,結束!");//添加額外代碼
//document.getElementById("imgBtnSubmit").click(); //規(guī)定時間結束后自動提交按鈕 提交試卷
}}timer = setInterval("CountDown()",1000); //--> </SCRIPT> <div id="timer"style="color:red"></div> </form> </body></html></span>

?

轉載于:https://www.cnblogs.com/wuling129/p/6904529.html

總結

以上是生活随笔為你收集整理的考试系统—— 刷新页面 考试剩余时间不重新开始的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。