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,这个问题解决了,接下来,就是对项目进一步优化了。。。。。。🏃🏃🏃