基于jQuery+Cookie实现的防止刷新的在线考试倒计时


Posted in Javascript onJune 19, 2015

基于jQuery+Cookie实现的防止刷新的在线考试倒计时

$(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毫秒执行一次
      setTimeout(function() {
        settime(remainTime);
      }, 1000);
    };
 
    //时添加cookie
    function addCookie(name, value, expiresHours) {
      var cookieString = name + "=" + escape(value); //escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。
      //判断是否设置过期时间,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;
    }
 
    //根据名字获取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;
        };
      };
    }

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
HTML Dom与Css控制方法
Oct 25 Javascript
在javascript中对于DOM的加强
Apr 11 Javascript
javascript 动态创建表格
Jan 08 Javascript
Java与JavaScript中判断两字符串是否相等的区别
Mar 13 Javascript
使用vue构建一个上传图片表单
Jul 04 Javascript
bootstrap Table插件使用demo
Aug 07 Javascript
js实现加载页面就自动触发超链接的示例
Aug 31 Javascript
JS实现json对象数组按对象属性排序操作示例
May 18 Javascript
Webpack之tree-starking 解析
Sep 11 Javascript
JS常用排序方法实例代码解析
Mar 03 Javascript
jQuery实现放大镜案例
Oct 19 jQuery
JavaScript实现复选框全选功能
Apr 11 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
Jun 19 #Javascript
JavaScript中数据结构与算法(五):经典KMP算法
Jun 19 #Javascript
使用AngularJS编写较为优美的JavaScript代码指南
Jun 19 #Javascript
javascript格式化日期时间方法汇总
Jun 19 #Javascript
JavaScript中数据结构与算法(四):串(BF)
Jun 19 #Javascript
JavaScript中数据结构与算法(三):链表
Jun 19 #Javascript
js结合正则实现国内手机号段校验
Jun 19 #Javascript
You might like
PHP5.0对象模型探索之抽象方法和抽象类
2006/09/05 PHP
最小化数据传输――在客户端存储数据
2006/10/09 PHP
php实现表单多按钮提交action的处理方法
2015/10/24 PHP
PHP bin2hex()函数基础实例讲解
2019/02/11 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
2019/07/08 PHP
键盘 keycode的值 javascript时触发事件时很有用的要素
2009/11/02 Javascript
IE中图片的onload事件无效问题和解决方法
2014/06/06 Javascript
jQuery控制网页打印指定区域的方法
2015/04/07 Javascript
js字符串截取函数slice、substring和substr的比较
2016/05/17 Javascript
微信小程序 Page()函数详解
2016/10/17 Javascript
bootstrap模态框消失问题的解决方法
2016/12/02 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
2016/12/14 Javascript
使用smartupload组件实现jsp+jdbc上传下载文件实例解析
2017/01/05 Javascript
微信小程序 五星评价功能的实现
2017/03/09 Javascript
JS基于贪心算法解决背包问题示例
2017/11/27 Javascript
js解决软键盘遮挡输入框的问题分享
2017/12/19 Javascript
layer插件select选中默认值的方法
2018/08/14 Javascript
Vue实现push数组并删除的例子
2019/11/01 Javascript
Node对CommonJS的模块规范
2019/11/06 Javascript
微信小程序拖拽排序列表的示例代码
2020/07/08 Javascript
[48:29]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS KG
2018/03/31 DOTA
JS设计模式之责任链模式实例详解
2018/02/03 Python
Python列表推导式与生成器表达式用法示例
2018/02/08 Python
Python变量类型知识点总结
2019/02/18 Python
详解python中TCP协议中的粘包问题
2019/03/22 Python
基于MATLAB和Python实现MFCC特征参数提取
2019/08/13 Python
python使用python-pptx删除ppt某页实例
2020/02/14 Python
详解torch.Tensor的4种乘法
2020/09/03 Python
VSCode 自定义html5模板的实现
2019/12/05 HTML / CSS
SkinCeuticals官网:美国药妆品牌
2018/04/19 全球购物
澳洲最大的时尚奢侈品电商平台:Cettire
2020/06/15 全球购物
廉政教育心得体会
2014/01/01 职场文书
学生会主席演讲稿
2014/04/25 职场文书
银行先进个人事迹材料
2014/05/11 职场文书
2016年毕业实习心得体会范文
2015/10/09 职场文书
Hive常用日期格式转换语法
2022/06/25 数据库