Django答题系统,前端答题页面防刷新

☀️
最近在写一个答题系统,当大部分后端逻辑完成时,高高兴兴的测试一波。后台批量导入数据,👍check,教师发布试卷,批量导入考试学生,👍check。等等.....Nice啊,成功了,就等优化了。
成功了,那就体验一波吧。。。。
🎓教师登录、创建试卷、导入学生信息。。。登录学生账号,进入考试。。选项,嗯。。可以。。。。中间电脑原因,浏览器刷新了一下。咦。。。。。❓❗❗❔❕❕重新计时了,考试记录没了。oh *** 💩******.......
对于只会一点前端的我,一时竟不知如何下手。突然🌟🌟🌟灵光一闪,用js的 localStorage 本地缓存不就ok了吗,hhhhhhh👏👏👏👏

首先就是答题记录的保存

最简单,写一题存一题,页面刷新时,从本地缓存中读取存入的题
上代码

obj = {};
// 存
function check(event, answer) {
  let id = "#" + event;
  obj[event.toString()] = answer;
  localStorage.setItem('obj', JSON.stringify(obj));
  $(id).attr("class", 'answer_no color1');      // 答题卡样式改变,标记已经答过的题
}
// 取
// 检查本地缓存是否有值
function checkStorage() {
  return JSON.stringify(localStorage) == "{}" ? false : true;
}
// 取值
function getStorage() {
  let answer_list = JSON.parse(localStorage.getItem('obj'));
  return answer_list;
}
// 我的做法是,取到对应的题的对应选项,模拟点击
function getStorage_answer() {
  let answer_list = getStorage();
  for (let k in answer_list) {
    let check = 'div#m' + k.toString() + '.panel-body>ul>li>label>input#' + answer_list[k];
    $(check).click();
  }
}

// 在页面加载时调用
if (checkStorage()){
  getStorage_answer();
}

好,题解决了,那时间呢。。。也用缓存,不不不☝️☝️☝️,麻烦
刚好,我加载页面时,后端将考试开始时间和考试时长传过来了,只需要计算考试结束时间与当前时间差,剩余倒计时不就出来了
ok,这个问题解决了,接下来,就是对项目进一步优化了。。。。。。🏃🏃🏃

posted @ 2021-06-30 21:41  LZ站长  阅读(481)  评论(0)    收藏  举报