基于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 相关文章推荐
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
Nov 23 Javascript
Angularjs中如何使用filterFilter函数过滤
Feb 06 Javascript
js点击返回跳转到指定页面实现过程
Aug 20 Javascript
深入理解angularjs过滤器
May 25 Javascript
基于bootstrap按钮式下拉菜单组件的搜索建议插件
Mar 25 Javascript
jquery 校验中国身份证号码实例详解
Apr 11 jQuery
js获取浏览器的各种属性
Apr 27 Javascript
js实现移动端编辑添加地址【模仿京东】
Apr 28 Javascript
setTimeout时间设置为0详细解析
Mar 13 Javascript
解决layui页面按钮点击无反应,也不报错的问题
Sep 29 Javascript
JavaScript图像放大镜效果实现方法详解
Jun 28 Javascript
Element Dialog对话框的使用示例
Jul 26 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
深入HTTP响应状态码速查表的详解
2013/06/07 PHP
php数组合并array_merge()函数使用注意事项
2014/06/19 PHP
PHP实现Unicode编码相互转换的方法示例
2020/11/17 PHP
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
2013/06/25 Javascript
javascript生成json数据简单示例分享
2014/02/14 Javascript
JavaScript中伪协议 javascript:使用探讨
2014/07/18 Javascript
jQuery中animate()方法用法实例
2014/12/24 Javascript
JavaScript中的异常捕捉介绍
2014/12/31 Javascript
javascript框架设计之种子模块
2015/06/23 Javascript
浅谈jQuery中ajaxPrefilter的应用
2016/08/01 Javascript
bootstrap模态框示例代码分享
2017/05/17 Javascript
原生JS写Ajax的请求函数功能
2017/12/22 Javascript
vue 中filter的多种用法
2018/04/26 Javascript
[49:58]完美世界DOTA2联赛PWL S3 Magma vs DLG 第一场 12.18
2020/12/19 DOTA
PYTHON压平嵌套列表的简单实现
2016/06/08 Python
TensorFlow实现创建分类器
2018/02/06 Python
python opencv 直方图反向投影的方法
2018/02/24 Python
python3实现猜数字游戏
2020/12/07 Python
python实现静态服务器
2019/09/05 Python
python实现的分析并统计nginx日志数据功能示例
2019/12/21 Python
python_mask_array的用法
2020/02/18 Python
用python介绍4种常用的单链表翻转的方法小结
2020/02/24 Python
Pytorch数据拼接与拆分操作实现图解
2020/04/30 Python
Python实现微信表情包炸群功能
2021/01/28 Python
英国泰坦旅游网站:全球陪同游览,邮轮和铁路旅行
2016/11/29 全球购物
ORACLE第二个十问
2013/12/14 面试题
企事业单位求职者的自我评价
2013/12/28 职场文书
入职担保书怎么写
2014/05/12 职场文书
园林系毕业生求职信
2014/06/23 职场文书
幼儿园清明节活动总结
2014/07/04 职场文书
银行党员批评与自我批评
2014/10/15 职场文书
2014小学二年级班主任工作总结
2014/12/05 职场文书
2015年财务人员个人工作总结
2015/07/27 职场文书
nginx对http请求处理的各个阶段详析
2021/03/31 Servers
goland 设置project gopath的操作
2021/05/06 Golang
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
2022/06/14 MySQL