<script type="text/javascript" language="javascript"> function lxfEndtime() { $(".lxftime").each(function () { var endtime = new Date($(this).attr("endtime")).getTime(); //结束的时间 var nowtime = new Date().getTime(); //现在的时间 var youtime = endtime - nowtime; //还有多久(毫秒值) var seconds = youtime / 1000; var minutes = Math.floor(seconds / 60); var hours = Math.floor(minutes / 60); var days = Math.floor(hours / 24); var CDay = days; var CHour = hours % 24; var CMinute = minutes % 60; var CSecond = Math.floor(seconds % 60); //"%"是取余运算,可以理解为60进一后取余数,然后只要余数。// var proid = $(":input[id^=rpt_pro_proid]").val();
在考试系统中难免会有倒计时提示,我们第一想到的是用js的settimeout但是如果页面刷新则重新倒计时,以下是一种解决方案:1.用settimeout每隔一秒触发一次2.用cookies在cookies中读取剩余时间 <script language="javascript" type = "text/javascript"> function GetCookieByName(name) { //获取cookie字符串 var strCookie = document.cookie; //将多cookie切割为多个名/值对 var arrCookie = strCookie.split("; "); var userId; //遍历cookie数组,处理每个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 type="text/javascript" language="javascript">
function lxfEndtime() {
$(".lxftime").each(function () {
var endtime = new Date($(this).attr("endtime")).getTime(); //结束的时间
var nowtime = new Date().getTime(); //现在的时间
var youtime = endtime - nowtime; //还有多久(毫秒值)
var seconds = youtime / 1000;
var minutes = Math.floor(seconds / 60);
var hours = Math.floor(minutes / 60);
var days = Math.floor(hours / 24);
var CDay = days;
var CHour = hours % 24;
var CMinute = minutes % 60;
var CSecond = Math.floor(seconds % 60); //"%"是取余运算,可以理解为60进一后取余数,然后只要余数。// var proid = $(":input[id^=rpt_pro_proid]").val();
if (endtime <= nowtime) { $(this).html("已过期")//如果结束日期小于当前日期就提示过期啦 } else {
$(this).html("<span>" + hours + "</span>时<span>" + CMinute + "</span>分<span>" + CSecond + "</span>秒"); //输出没有天数的数据 }
});
setTimeout("lxfEndtime()", 1000);
};
$(function () {
lxfEndtime();
});
</script>
<script language=javascript>
var sec=0;var min=0;var hou=0;flag=0;idt=window.setTimeout("update();",1000);
function update()
{
if (min==19 && sec==59) {alert("还剩10分钟,请抓紧时间答卷!");}
if (min==30) {alert("考试时间结束!");}// document.getElementById("Button1").click(); //规定时间结束后自动提交按钮
sec++;
if(sec==60){sec=0;min+=1;}
if(min==60){min=0;hou+=1;}
if((min>0)&&(flag==0)){flag=1;}
document.getElementById("Text1").value="已用时间:"+hou+"时"+min+"分"+sec+"秒";
idt=window.setTimeout("update();",2000);
}
</script>1 上述代码放入head中
2 from中放入一个html控件Text1,用于显示时间
3 后台代码Page_load中代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)// 只有首次加载时,执行此方法,回传页面不执行此方法 {
Page.ClientScript.RegisterStartupScript(GetType(), "info", "update();", true);
}
}
因为js中不支持查找label控件,所以只能用html组中的input(Text)代替
<script language="javascript" type = "text/javascript">
function GetCookieByName(name) {
//获取cookie字符串
var strCookie = document.cookie;
//将多cookie切割为多个名/值对
var arrCookie = strCookie.split("; ");
var userId;
//遍历cookie数组,处理每个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>.net后台部分:在后台代码中设置cookies值Response.Cookies["m"].Value = strs[0];
Response.Cookies["s"].Value = strs[1];
strs[1]就是剩余的秒数难道这个数据你获取不到嘛