更多操作
无编辑摘要 |
无编辑摘要 |
||
第1行: | 第1行: | ||
function getdata(){ | function getdata(){ | ||
var data = $('.data') | |||
var dataLength = data.length | |||
var | for(var i=0;i<dataLength;i++){ | ||
var singleData = $(data[i]).text() | |||
var jsonData = $.parseJSON(singleData) | |||
setTimeout(function(jsonData,i,dataLength){ | |||
var o = eval('newTimu('+i+','+JSON.stringify(jsonData)+').'+jsonData.type+'()') | |||
render(i,jsonData.type,o) | |||
console.log('加载题目:'+(i+1)+'/'+dataLength) | |||
},0,jsonData,i,dataLength) | |||
} | |||
} | |||
function addAfter(id,content) { | |||
var data = $('.data') | |||
content.insertAfter(data[id]) | |||
} | |||
function isObjExist(target){ | |||
if($(target).length>0){return true;}else {return false;} | |||
} | |||
function render(id,type,obj,parent){ | |||
parent =parent !==undefined ?parent : '#subjectContainer-'+type | |||
if(typeof(parent)!=='object'){ | |||
parent = $(parent) | |||
} | |||
if(isObjExist(parent)){obj.appendTo(parent)}else {addAfter(id,obj)} | |||
} | |||
function dicLen(dic){ | |||
var count=0; | |||
for(var key in dic){ | |||
console.log(key+'='+dic[key]); | |||
count++; | |||
} | |||
return count | |||
} | |||
function newTimu(id,json,hideButton,addHr,parent=''){ | |||
parent = parent !== undefined ? parent : '' | |||
addHr = addHr !== undefined ? addHr : true | |||
hideButton = hideButton !== undefined ? hideButton : false | |||
var type = json.type | |||
var o = new Object() | |||
o.temp = { | |||
main:$('<div id="'+id+'" class="type'+type+'"></div>'), | |||
subject:$('<div class="subject"></div>'), | |||
range:$('<div class="sourceRange"></div>'), | |||
info:$('<div class="info"></div>'), | |||
titleCon:$('<div class="titleContainer"></div>'), | |||
source:$('<p class="source"></p>'), | |||
title:$('<p class="title"></p>'), | |||
options:$('<div class="options"></div>'), | |||
btn:$('<button class="button-small button-pill button button-caution" id="showSingle-' + id + '" class="showSingleBtn">提交</button>'), | |||
ansCon:$('<div id="ansContainer" class="ansContainer noDisplay"></div>'), | |||
correct:$('<p style="display:inline;"><b>正确答案:</b></p><p class="correctAnswer"></p><br>'), | |||
explain:$('<p style="display:inline;"><b>解析: </b></p><p class="explain"></p><br>'), | |||
select:$('<select class="button-small button-rounded button"></select>'), | |||
subTitle:$('<div id=""></div>') | |||
} | |||
o.hideButton = hideButton | |||
o.parent = parent | |||
if(type!=='A3'&&type!=='PD'){ | |||
o.temp.btn.bind("click",function (){ | |||
showChoiceAnswer(id,type,json.answer) | |||
}) | |||
} | |||
o.A = function () { | |||
this.temp.source.text(json.source) | |||
this.temp.title.text(json.title) | |||
this.temp.correct.nextAll('.correctAnswer').text(json.answer) | |||
this.temp.explain.nextAll('.correctAnswer').text(json.explain) | |||
var options = formatAnsDic(json.choices) | |||
for(var k in options) { | |||
var label = '<label id="' + k + '"><input name="singelChoice-' + id + '" type="radio" value="' + k + '" />' + k + ':' + options[k] + '</label>' | |||
this.temp.options.append(label) | |||
} | } | ||
this.temp.titleCon.append(this.temp.source,this.temp.title) | |||
this.temp.ansCon.append(this.temp.correct,this.temp.explain) | |||
this.temp.subject.append(this.temp.titleCon,this.temp.options) | |||
if(!hideButton){this.temp.subject.append(this.temp.btn)} | |||
this.temp.main.append(this.temp.subject,this.temp.ansCon) | |||
if(addHr){this.temp.main.append('<hr>')} | |||
return this.temp.main | |||
} | |||
o.A3 = function () { | |||
var subIDs = [] | |||
var s = json.source*1;var e = json.source*1+json.sourceRange*1 -1 | |||
this.temp.range.text('第 '+s+' 到 '+e+' 题') | |||
for(var i=0;i<json.title.length;i++){ | |||
subIDs.push(id+'-'+i) | |||
if(json.explain[i]==undefined){ | |||
json.explain[i] = '暂无解析' | |||
} | |||
var data = { | |||
"type":"A", | |||
"source":json.source+'-'+(i+1), | |||
"title":json.title[i], | |||
"answer":json.answer[i], | |||
"explain":json.explain[i], | |||
"choices":json.choices[i], | |||
} | } | ||
var newA = newTimu(id+'-'+i,data,true,false).A() | |||
render(id+'-'+i,'A',newA,this.temp.titleCon) | |||
} | } | ||
o.temp.btn.bind("click",function (){ | |||
showChoiceAnswer(subIDs,type,json.answer) | |||
}) | |||
this.temp.info.text(json.info) | |||
this.temp.subject.append(this.temp.range,this.temp.info,this.temp.titleCon) | |||
if(!hideButton){this.temp.subject.append(this.temp.btn)} | |||
this.temp.main.append(this.temp.subject) | |||
if(addHr){this.temp.main.append('<hr>')} | |||
return this.temp.main | |||
} | |||
o.B = function () { | |||
var s = json.source*1;var e = json.source*1+json.sourceRange*1 -1 | |||
this.temp.range.text('第 '+s+' 到 '+e+' 题') | |||
var options = formatAnsDic(json.choices) | |||
for(var k in options){ | |||
var label = '<li id="'+k+'">'+k+':'+options[k]+'</li>' | |||
this.temp.options.append(label) | |||
this.temp.select.append('<option value="'+k+'">'+k+'</option>') | |||
} | } | ||
for(var i=0;i<json.title.length;i++){ | |||
var | var reg1 = /\(\)/g | ||
var text = json.title[i] | |||
if(reg1.test(text)){ | |||
text = text.replace("()",this.temp.select.prop("outerHTML")) | |||
}else{ | |||
text += this.temp.select.prop("outerHTML") | |||
}else { | |||
} | } | ||
this.temp.subTitle.attr('id',id+'-'+i) | |||
this.temp.source.text(s+i) | |||
this.temp.subTitle.html(this.temp.source.prop("outerHTML")+text) | |||
this.temp.titleCon.append(this.temp.subTitle.prop("outerHTML")) | |||
} | } | ||
for(var i=0;i<json.answer.length;i++){ | |||
this.temp.correct.nextAll('.correctAnswer').append('<p id="ans-'+id +'-'+i+'">'+(id+i)+':'+json.answer[i]+'</p>') | |||
} | } | ||
for(var i=0;i<json.explain.length;i++){ | |||
this.temp.explain.nextAll('.explain').append('<p id="exp-'+id +'-'+i+'">'+(id+i)+':'+json.explain[i]+'</p>') | |||
} | } | ||
this.temp.subject.append(this.temp.range,this.temp.options,this.temp.titleCon) | |||
if(!hideButton){this.temp.subject.append(this.temp.btn)} | |||
this.temp.ansCon.append(this.temp.correct,this.temp.explain) | |||
this.temp.main.append(this.temp.subject,this.temp.ansCon) | |||
if(addHr){this.temp.main.append('<hr>')} | |||
return this.temp.main | |||
} | |||
o.C = function () { | |||
var s = json.source*1;var e = json.source*1+json.sourceRange*1 -1 | |||
this.temp.range.text('第 '+s+' 到 '+e+' 题') | |||
var options = formatAnsDic(json.choices) | |||
for(var k in options){ | |||
var label = '<li id="'+k+'">'+k+':'+options[k]+'</li>' | |||
this.temp.options.append(label) | |||
this.temp.select.append('<option value="'+k+'">'+k+'</option>') | |||
} | } | ||
for(var i=0;i<json.title.length;i++){ | |||
var reg1 = /\(\)/g | |||
var text = json.title[i] | |||
if(reg1.test(text)){ | |||
text = text.replace("()",this.temp.select.prop("outerHTML")) | |||
}else{ | |||
text += this.temp.select.prop("outerHTML") | |||
var | |||
var | |||
} | } | ||
this.temp.subTitle.attr('id',id+'-'+i) | |||
this.temp.source.text(s+i) | |||
this.temp.subTitle.html(this.temp.source.prop("outerHTML")+text) | |||
this.temp.titleCon.append(this.temp.subTitle.prop("outerHTML")) | |||
} | } | ||
for(var i=0;i<json.answer.length;i++){ | |||
this.temp.correct.nextAll('.correctAnswer').append('<p id="ans-'+id +'-'+i+'">'+(id+i)+':'+json.answer[i]+'</p>') | |||
} | } | ||
for(var i=0;i<json.explain.length;i++){ | |||
this.temp.explain.nextAll('.explain').append('<p id="exp-'+id +'-'+i+'">'+(id+i)+':'+json.explain[i]+'</p>') | |||
} | } | ||
this.temp.subject.append(this.temp.range,this.temp.titleCon,this.temp.options) | |||
if(!hideButton){this.temp.subject.append(this.temp.btn)} | |||
this.temp.ansCon.append(this.temp.correct,this.temp.explain) | |||
this.temp.main.append(this.temp.subject,this.temp.ansCon) | |||
if(addHr){this.temp.main.append('<hr>')} | |||
return this.temp.main | |||
} | |||
o.X = function () { | |||
this.temp.source.text(json.source) | |||
this.temp.title.text(json.title) | |||
this.temp.correct.nextAll('.correctAnswer').text(json.answer) | |||
this.temp.explain.nextAll('.correctAnswer').text(json.explain) | |||
var options = formatAnsDic(json.choices) | |||
for(var k in options){ | |||
var label = '<label id="'+k+'"><input name="singelChoice-'+id+'" type="checkbox" value="'+k+'" />'+k+':'+options[k]+'</label>' | |||
this.temp.options.append(label) | |||
} | } | ||
this.temp.titleCon.append(this.temp.source,this.temp.title) | |||
this.temp.ansCon.append(this.temp.correct,this.temp.explain) | |||
this.temp.subject.append(this.temp.titleCon,this.temp.options) | |||
if(!hideButton){this.temp.subject.append(this.temp.btn)} | |||
this.temp.main.append(this.temp.subject,this.temp.ansCon) | |||
if(addHr){this.temp.main.append('<hr>')} | |||
return this.temp.main | |||
} | |||
o.PD = function () { | |||
this.temp.source.text(json.source) | |||
this.temp.title.text(json.title) | |||
this.temp.explain.nextAll('.correctAnswer').text(json.explain) | |||
var ans = '' | |||
if(json.answer=='T' || json.answer=='正确' || json.answer=='1' || json.answer=='√'){ | |||
ans = '正确' | |||
}else if(json.answer=='F' || json.answer=='错误' || json.answer=='0' || json.answer=='×'){ | |||
ans = '错误' | |||
} | } | ||
this.temp.correct.nextAll('.correctAnswer').text(ans) | |||
function | o.temp.btn.bind("click",function (){ | ||
showChoiceAnswer(id,'A',ans) | |||
}) | |||
this.temp.options.append('<label id="正确" style="display: inline;"><input name="singelChoice-'+id+'" type="radio" value="正确" />正确</label>' + | |||
'<label id="错误" style="display: inline;"><input name="singelChoice-'+id+'" type="radio" value="错误" />错误</label>') | |||
this.temp.titleCon.append(this.temp.source,this.temp.title) | |||
this.temp.ansCon.append(this.temp.correct,this.temp.explain) | |||
this.temp.subject.append(this.temp.titleCon,this.temp.options) | |||
if(!hideButton){this.temp.subject.append(this.temp.btn)} | |||
this.temp.main.append(this.temp.subject,this.temp.ansCon) | |||
if(addHr){this.temp.main.append('<hr>')} | |||
return this.temp.main | |||
} | |||
o.TK = function () { | |||
this.temp.source.text(json.source) | |||
var form = $('<form id="form-'+id+'" class="title"></form>') | |||
var pos = json.pos | |||
var posReg = new RegExp(pos,'g') | |||
var posCount = json.title.match(posReg).length | |||
for(var i=0;i<posCount;i++){ | |||
json.title = json.title.replace(pos,'<input name="'+id+'-'+i+'" id="'+id+'-'+i+'" type="text" form="form-'+id+'"/>') | |||
} | } | ||
form.html(json.title) | |||
this.temp.title.text(json.title) | |||
this.temp.correct.nextAll('.correctAnswer').text(json.answer) | |||
this.temp.explain.nextAll('.correctAnswer').text(json.explain) | |||
this.temp.titleCon.append(this.temp.source,form) | |||
this.temp.ansCon.append(this.temp.correct,this.temp.explain) | |||
this.temp.subject.append(this.temp.titleCon,this.temp.options) | |||
if(!hideButton){this.temp.subject.append(this.temp.btn)} | |||
this.temp.main.append(this.temp.subject,this.temp.ansCon) | |||
if(addHr){this.temp.main.append('<hr>')} | |||
return this.temp.main | |||
} | |||
o.MJ = function () { | |||
this.temp.source.text(json.source) | |||
this.temp.title.html(json.title + ':<span class="blur" tabindex="0" style="display:inline;outline=0;" onclick="">' + json.answer +'</span>') | |||
this.temp.titleCon.append(this.temp.source,this.temp.title) | |||
this.temp.subject.append(this.temp.titleCon,this.temp.options) | |||
this.temp.main.append(this.temp.subject) | |||
if(addHr){this.temp.main.append('<hr>')} | |||
return this.temp.main | |||
} | |||
return o | |||
} | |||
function formatAnsDic(d) { | |||
var c = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' | |||
var dic = {} | |||
for(var i=0;i<c.length;i++){ | |||
if(d?.[c[i]]||''.length>0){ | |||
dic[c[i]] = d[c[i]] | |||
} | } | ||
} | |||
return dic | |||
} | |||
function showAns(id,type,correctAnswer){ | |||
var s = new Object() | |||
} | |||
function showChoiceAnswer(id,type,correctAnswer){ | |||
var subjectCon = $('#'+id) | |||
var titleCon = subjectCon.children('.subject').children('.titleContainer') | |||
var ansCon = subjectCon.children('.ansContainer') | |||
var answers = subjectCon.children('.subject').children('.options') | |||
console.log(correctAnswer) | |||
if(type==="A"){ | |||
var correctAnsText = correctAnswer | |||
var choice = $('input[name="singelChoice-'+id+'"]:checked').val(); | |||
console.log(choice) | |||
var showCorrect = answers.children('#'+correctAnsText) | |||
var showChoice = answers.children('#'+choice) | |||
$('#showSingle-'+id).addClass('noDisplay') | |||
ansCon.fadeIn(100) | |||
if(choice===correctAnsText){ | |||
showCorrect.addClass('correct') | |||
}else{ | |||
showCorrect.addClass('correct') | |||
showChoice.addClass('wrong') | |||
} | } | ||
function | setTimeout(function (){ | ||
removeBackground(showChoice) | |||
removeBackground(showCorrect) | |||
}, 4000); | |||
setTimeout(function (){ | |||
showCorrect.removeClass('no-background') | |||
showChoice.removeClass('no-background') | |||
showCorrect.removeClass('correct') | |||
showChoice.removeClass('wrong') | |||
}, 5000); | |||
}else if(type==='A3'){ | |||
$('#showSingle-'+id).addClass('noDisplay') | |||
for(var i=0;i<id.length;i++){ | |||
var subID = id[i] | |||
var mainID = subID.split('-')[0] | |||
$( | console.log(subID) | ||
console.log(mainID) | |||
subjectCon = $('#'+ id[i]) | |||
titleCon = subjectCon.children('.subject').children('.titleContainer') | |||
ansCon = subjectCon.children('.ansContainer') | |||
answers = subjectCon.children('.subject').children('.options') | |||
$('#showSingle-'+id).addClass('noDisplay') | |||
var correctAns= correctAnswer[i] | |||
//以下与A型题时一样的代码,知识用subID替换ID变量 | |||
showChoiceAnswer(subID,'A',correctAns) | |||
} | } | ||
function | } else if(type==='B'){ | ||
var | console.log(titleCon) | ||
var | titleCon.children('div').each(function (index,i){ | ||
console.log(i) | |||
var subTitleID = $(i).attr('id') | |||
var ans = correctAnswer[index] | |||
var choice = $('#'+id+'-'+index).find("option:selected").text(); | |||
$('#showSingle-'+id).addClass('noDisplay') | |||
console.log(choice) | |||
if(choice==ans){ | |||
$('#'+id+'-'+index).addClass('correct') | |||
}else { | }else { | ||
$('#'+id+'-'+index).addClass('wrong') | |||
$('<p class="answerTip">正确答案:'+ans+'</p>').appendTo($('#'+id+'-'+index)) | |||
} | } | ||
setTimeout(function (){ | |||
$('#'+id+'-'+index).removeClass('correct') | |||
$('#'+id+'-'+index).removeClass('wrong') | |||
}, 5000); | |||
' | }) | ||
} else if(type=="C"){ | |||
console.log(titleCon) | |||
$('#showSingle-'+id).addClass('noDisplay') | |||
titleCon.children('div').each(function (index,i){ | |||
var | console.log(i) | ||
var | var subTitleID = $(i).attr('id') | ||
var ans = correctAnswer[index] | |||
var choice = $('#'+id+'-'+index).find("option:selected").text(); | |||
console.log(choice) | |||
if(choice==ans){ | |||
if( | $('#'+id+'-'+index).addClass('correct') | ||
}else { | }else { | ||
$('#'+id+'-'+index).addClass('wrong') | |||
$('<p class="answerTip">正确答案:'+ans+'</p>').appendTo($('#'+id+'-'+index)) | |||
} | } | ||
setTimeout(function (){ | |||
$('#'+id+'-'+index).removeClass('correct') | |||
$('#'+id+'-'+index).removeClass('wrong') | |||
}, 5000); | |||
}) | |||
var | }else if(type=="X"){ | ||
var correctAnsText = correctAnswer | |||
var choice = "" | |||
$('input[name="singelChoice-'+id+'"]:checked').each(function (){ | |||
choice += $(this).val() | |||
var | }) | ||
if( | console.log(choice) | ||
console.log(correctAnsText) | |||
}else { | var btn = $('#showSingle-'+id).addClass('noDisplay') | ||
ansCon.fadeIn(100) | |||
for(var i=0;i<choice.length;i++){ | |||
var showCorrect = answers.children('#'+correctAnsText[i]) | |||
var showChoice = answers.children('#'+choice[i]) | |||
if(correctAnsText.indexOf(choice[i])!=-1){ | |||
showChoice.addClass('correct') | |||
}else{ | |||
showChoice.addClass('wrong') | |||
} | } | ||
} | } | ||
for(var i=0;i<correctAnsText.length;i++){ | |||
console.log(i) | |||
var showCorrect = answers.children('#'+correctAnsText[i]) | |||
$('<p class="answerTip">✓</p>').appendTo(showCorrect) | |||
console.log( | |||
var | |||
} | } | ||
function | answers.children('label').each(function (){ | ||
var | var a = $(this) | ||
setTimeout(function (){ | |||
removeBackground(a) | |||
var | }, 4000); | ||
setTimeout(function (){ | |||
' | a.removeClass('no-background') | ||
' | a.removeClass('correct') | ||
a.removeClass('wrong') | |||
}, 5000); | |||
}) | |||
}else if(type=="TK"){ | |||
$('#showSingle-'+id).addClass('noDisplay') | |||
ansCon.fadeIn(100) | |||
var answers = correctAnswer | |||
console.log(answers[0]) | |||
var form =$('#form-'+id).serializeArray() | |||
var myAns = [] | |||
console.log(form[0]['value']) | |||
for(var i=0;i<form.length;i++){ | |||
var input = $('#form-'+id).children('#'+id+'-'+i) | |||
if(answers[i] != form[i]['value']){ | |||
$('<p class="wrong TKcheck">'+answers[i]+'</p>').insertAfter(input) | |||
}else{ | |||
$('<p class="correct TKcheck">'+answers[i]+'</p>').insertAfter(input) | |||
} | } | ||
} | } | ||
} | } | ||
} | } | ||
function removeBackground(obj){ | |||
obj.addClass('no-background') | |||
} | } |
2022年10月13日 (四) 02:05的版本
function getdata(){
var data = $('.data')
var dataLength = data.length
for(var i=0;i<dataLength;i++){
var singleData = $(data[i]).text()
var jsonData = $.parseJSON(singleData)
setTimeout(function(jsonData,i,dataLength){
var o = eval('newTimu('+i+','+JSON.stringify(jsonData)+').'+jsonData.type+'()')
render(i,jsonData.type,o)
console.log('加载题目:'+(i+1)+'/'+dataLength)
},0,jsonData,i,dataLength)
}
}
function addAfter(id,content) {
var data = $('.data')
content.insertAfter(data[id])
}
function isObjExist(target){
if($(target).length>0){return true;}else {return false;}
}
function render(id,type,obj,parent){
parent =parent !==undefined ?parent : '#subjectContainer-'+type
if(typeof(parent)!=='object'){
parent = $(parent)
}
if(isObjExist(parent)){obj.appendTo(parent)}else {addAfter(id,obj)}
}
function dicLen(dic){
var count=0;
for(var key in dic){
console.log(key+'='+dic[key]);
count++;
}
return count
}
function newTimu(id,json,hideButton,addHr,parent=''){
parent = parent !== undefined ? parent : ''
addHr = addHr !== undefined ? addHr : true
hideButton = hideButton !== undefined ? hideButton : false
var type = json.type
var o = new Object()
o.temp = {
main:$('<div id="'+id+'" class="type'+type+'"></div>'),
subject:$('<div class="subject"></div>'),
range:$('<div class="sourceRange"></div>'),
info:$('<div class="info"></div>'),
titleCon:$('<div class="titleContainer"></div>'),
source:$('<p class="source"></p>'),
title:$('<p class="title"></p>'),
options:$('<div class="options"></div>'),
btn:$('<button class="button-small button-pill button button-caution" id="showSingle-' + id + '" class="showSingleBtn">提交</button>'),
ansCon:$('<div id="ansContainer" class="ansContainer noDisplay"></div>'),
correct:$('<p style="display:inline;"><b>正确答案:</b></p><p class="correctAnswer"></p><br>'),
explain:$('<p style="display:inline;"><b>解析: </b></p><p class="explain"></p><br>'),
select:$('<select class="button-small button-rounded button"></select>'),
subTitle:$('<div id=""></div>')
}
o.hideButton = hideButton
o.parent = parent
if(type!=='A3'&&type!=='PD'){
o.temp.btn.bind("click",function (){
showChoiceAnswer(id,type,json.answer)
})
}
o.A = function () {
this.temp.source.text(json.source)
this.temp.title.text(json.title)
this.temp.correct.nextAll('.correctAnswer').text(json.answer)
this.temp.explain.nextAll('.correctAnswer').text(json.explain)
var options = formatAnsDic(json.choices)
for(var k in options) {
var label = '<label id="' + k + '"><input name="singelChoice-' + id + '" type="radio" value="' + k + '" />' + k + ':' + options[k] + '</label>'
this.temp.options.append(label)
}
this.temp.titleCon.append(this.temp.source,this.temp.title)
this.temp.ansCon.append(this.temp.correct,this.temp.explain)
this.temp.subject.append(this.temp.titleCon,this.temp.options)
if(!hideButton){this.temp.subject.append(this.temp.btn)}
this.temp.main.append(this.temp.subject,this.temp.ansCon)
if(addHr){this.temp.main.append('<hr>')}
return this.temp.main
}
o.A3 = function () {
var subIDs = []
var s = json.source*1;var e = json.source*1+json.sourceRange*1 -1
this.temp.range.text('第 '+s+' 到 '+e+' 题')
for(var i=0;i<json.title.length;i++){
subIDs.push(id+'-'+i)
if(json.explain[i]==undefined){
json.explain[i] = '暂无解析'
}
var data = {
"type":"A",
"source":json.source+'-'+(i+1),
"title":json.title[i],
"answer":json.answer[i],
"explain":json.explain[i],
"choices":json.choices[i],
}
var newA = newTimu(id+'-'+i,data,true,false).A()
render(id+'-'+i,'A',newA,this.temp.titleCon)
}
o.temp.btn.bind("click",function (){
showChoiceAnswer(subIDs,type,json.answer)
})
this.temp.info.text(json.info)
this.temp.subject.append(this.temp.range,this.temp.info,this.temp.titleCon)
if(!hideButton){this.temp.subject.append(this.temp.btn)}
this.temp.main.append(this.temp.subject)
if(addHr){this.temp.main.append('<hr>')}
return this.temp.main
}
o.B = function () {
var s = json.source*1;var e = json.source*1+json.sourceRange*1 -1
this.temp.range.text('第 '+s+' 到 '+e+' 题')
var options = formatAnsDic(json.choices)
for(var k in options){
var label = '<li id="'+k+'">'+k+':'+options[k]+'</li>'
this.temp.options.append(label)
this.temp.select.append('<option value="'+k+'">'+k+'</option>')
}
for(var i=0;i<json.title.length;i++){
var reg1 = /\(\)/g
var text = json.title[i]
if(reg1.test(text)){
text = text.replace("()",this.temp.select.prop("outerHTML"))
}else{
text += this.temp.select.prop("outerHTML")
}
this.temp.subTitle.attr('id',id+'-'+i)
this.temp.source.text(s+i)
this.temp.subTitle.html(this.temp.source.prop("outerHTML")+text)
this.temp.titleCon.append(this.temp.subTitle.prop("outerHTML"))
}
for(var i=0;i<json.answer.length;i++){
this.temp.correct.nextAll('.correctAnswer').append('<p id="ans-'+id +'-'+i+'">'+(id+i)+':'+json.answer[i]+'</p>')
}
for(var i=0;i<json.explain.length;i++){
this.temp.explain.nextAll('.explain').append('<p id="exp-'+id +'-'+i+'">'+(id+i)+':'+json.explain[i]+'</p>')
}
this.temp.subject.append(this.temp.range,this.temp.options,this.temp.titleCon)
if(!hideButton){this.temp.subject.append(this.temp.btn)}
this.temp.ansCon.append(this.temp.correct,this.temp.explain)
this.temp.main.append(this.temp.subject,this.temp.ansCon)
if(addHr){this.temp.main.append('<hr>')}
return this.temp.main
}
o.C = function () {
var s = json.source*1;var e = json.source*1+json.sourceRange*1 -1
this.temp.range.text('第 '+s+' 到 '+e+' 题')
var options = formatAnsDic(json.choices)
for(var k in options){
var label = '<li id="'+k+'">'+k+':'+options[k]+'</li>'
this.temp.options.append(label)
this.temp.select.append('<option value="'+k+'">'+k+'</option>')
}
for(var i=0;i<json.title.length;i++){
var reg1 = /\(\)/g
var text = json.title[i]
if(reg1.test(text)){
text = text.replace("()",this.temp.select.prop("outerHTML"))
}else{
text += this.temp.select.prop("outerHTML")
}
this.temp.subTitle.attr('id',id+'-'+i)
this.temp.source.text(s+i)
this.temp.subTitle.html(this.temp.source.prop("outerHTML")+text)
this.temp.titleCon.append(this.temp.subTitle.prop("outerHTML"))
}
for(var i=0;i<json.answer.length;i++){
this.temp.correct.nextAll('.correctAnswer').append('<p id="ans-'+id +'-'+i+'">'+(id+i)+':'+json.answer[i]+'</p>')
}
for(var i=0;i<json.explain.length;i++){
this.temp.explain.nextAll('.explain').append('<p id="exp-'+id +'-'+i+'">'+(id+i)+':'+json.explain[i]+'</p>')
}
this.temp.subject.append(this.temp.range,this.temp.titleCon,this.temp.options)
if(!hideButton){this.temp.subject.append(this.temp.btn)}
this.temp.ansCon.append(this.temp.correct,this.temp.explain)
this.temp.main.append(this.temp.subject,this.temp.ansCon)
if(addHr){this.temp.main.append('<hr>')}
return this.temp.main
}
o.X = function () {
this.temp.source.text(json.source)
this.temp.title.text(json.title)
this.temp.correct.nextAll('.correctAnswer').text(json.answer)
this.temp.explain.nextAll('.correctAnswer').text(json.explain)
var options = formatAnsDic(json.choices)
for(var k in options){
var label = '<label id="'+k+'"><input name="singelChoice-'+id+'" type="checkbox" value="'+k+'" />'+k+':'+options[k]+'</label>'
this.temp.options.append(label)
}
this.temp.titleCon.append(this.temp.source,this.temp.title)
this.temp.ansCon.append(this.temp.correct,this.temp.explain)
this.temp.subject.append(this.temp.titleCon,this.temp.options)
if(!hideButton){this.temp.subject.append(this.temp.btn)}
this.temp.main.append(this.temp.subject,this.temp.ansCon)
if(addHr){this.temp.main.append('<hr>')}
return this.temp.main
}
o.PD = function () {
this.temp.source.text(json.source)
this.temp.title.text(json.title)
this.temp.explain.nextAll('.correctAnswer').text(json.explain)
var ans = ''
if(json.answer=='T' || json.answer=='正确' || json.answer=='1' || json.answer=='√'){
ans = '正确'
}else if(json.answer=='F' || json.answer=='错误' || json.answer=='0' || json.answer=='×'){
ans = '错误'
}
this.temp.correct.nextAll('.correctAnswer').text(ans)
o.temp.btn.bind("click",function (){
showChoiceAnswer(id,'A',ans)
})
this.temp.options.append('<label id="正确" style="display: inline;"><input name="singelChoice-'+id+'" type="radio" value="正确" />正确</label>' +
'<label id="错误" style="display: inline;"><input name="singelChoice-'+id+'" type="radio" value="错误" />错误</label>')
this.temp.titleCon.append(this.temp.source,this.temp.title)
this.temp.ansCon.append(this.temp.correct,this.temp.explain)
this.temp.subject.append(this.temp.titleCon,this.temp.options)
if(!hideButton){this.temp.subject.append(this.temp.btn)}
this.temp.main.append(this.temp.subject,this.temp.ansCon)
if(addHr){this.temp.main.append('<hr>')}
return this.temp.main
}
o.TK = function () {
this.temp.source.text(json.source)
var form = $('<form id="form-'+id+'" class="title"></form>')
var pos = json.pos
var posReg = new RegExp(pos,'g')
var posCount = json.title.match(posReg).length
for(var i=0;i<posCount;i++){
json.title = json.title.replace(pos,'<input name="'+id+'-'+i+'" id="'+id+'-'+i+'" type="text" form="form-'+id+'"/>')
}
form.html(json.title)
this.temp.title.text(json.title)
this.temp.correct.nextAll('.correctAnswer').text(json.answer)
this.temp.explain.nextAll('.correctAnswer').text(json.explain)
this.temp.titleCon.append(this.temp.source,form)
this.temp.ansCon.append(this.temp.correct,this.temp.explain)
this.temp.subject.append(this.temp.titleCon,this.temp.options)
if(!hideButton){this.temp.subject.append(this.temp.btn)}
this.temp.main.append(this.temp.subject,this.temp.ansCon)
if(addHr){this.temp.main.append('<hr>')}
return this.temp.main
}
o.MJ = function () {
this.temp.source.text(json.source)
this.temp.title.html(json.title + ':<span class="blur" tabindex="0" style="display:inline;outline=0;" onclick="">' + json.answer +'</span>')
this.temp.titleCon.append(this.temp.source,this.temp.title)
this.temp.subject.append(this.temp.titleCon,this.temp.options)
this.temp.main.append(this.temp.subject)
if(addHr){this.temp.main.append('<hr>')}
return this.temp.main
}
return o
}
function formatAnsDic(d) {
var c = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
var dic = {}
for(var i=0;i<c.length;i++){
if(d?.[c[i]]||''.length>0){
dic[c[i]] = d[c[i]]
}
}
return dic
}
function showAns(id,type,correctAnswer){
var s = new Object()
}
function showChoiceAnswer(id,type,correctAnswer){
var subjectCon = $('#'+id)
var titleCon = subjectCon.children('.subject').children('.titleContainer')
var ansCon = subjectCon.children('.ansContainer')
var answers = subjectCon.children('.subject').children('.options')
console.log(correctAnswer)
if(type==="A"){
var correctAnsText = correctAnswer
var choice = $('input[name="singelChoice-'+id+'"]:checked').val();
console.log(choice)
var showCorrect = answers.children('#'+correctAnsText)
var showChoice = answers.children('#'+choice)
$('#showSingle-'+id).addClass('noDisplay')
ansCon.fadeIn(100)
if(choice===correctAnsText){
showCorrect.addClass('correct')
}else{
showCorrect.addClass('correct')
showChoice.addClass('wrong')
}
setTimeout(function (){
removeBackground(showChoice)
removeBackground(showCorrect)
}, 4000);
setTimeout(function (){
showCorrect.removeClass('no-background')
showChoice.removeClass('no-background')
showCorrect.removeClass('correct')
showChoice.removeClass('wrong')
}, 5000);
}else if(type==='A3'){
$('#showSingle-'+id).addClass('noDisplay')
for(var i=0;i<id.length;i++){
var subID = id[i]
var mainID = subID.split('-')[0]
console.log(subID)
console.log(mainID)
subjectCon = $('#'+ id[i])
titleCon = subjectCon.children('.subject').children('.titleContainer')
ansCon = subjectCon.children('.ansContainer')
answers = subjectCon.children('.subject').children('.options')
$('#showSingle-'+id).addClass('noDisplay')
var correctAns= correctAnswer[i]
//以下与A型题时一样的代码,知识用subID替换ID变量
showChoiceAnswer(subID,'A',correctAns)
}
} else if(type==='B'){
console.log(titleCon)
titleCon.children('div').each(function (index,i){
console.log(i)
var subTitleID = $(i).attr('id')
var ans = correctAnswer[index]
var choice = $('#'+id+'-'+index).find("option:selected").text();
$('#showSingle-'+id).addClass('noDisplay')
console.log(choice)
if(choice==ans){
$('#'+id+'-'+index).addClass('correct')
}else {
$('#'+id+'-'+index).addClass('wrong')
$('<p class="answerTip">正确答案:'+ans+'</p>').appendTo($('#'+id+'-'+index))
}
setTimeout(function (){
$('#'+id+'-'+index).removeClass('correct')
$('#'+id+'-'+index).removeClass('wrong')
}, 5000);
})
} else if(type=="C"){
console.log(titleCon)
$('#showSingle-'+id).addClass('noDisplay')
titleCon.children('div').each(function (index,i){
console.log(i)
var subTitleID = $(i).attr('id')
var ans = correctAnswer[index]
var choice = $('#'+id+'-'+index).find("option:selected").text();
console.log(choice)
if(choice==ans){
$('#'+id+'-'+index).addClass('correct')
}else {
$('#'+id+'-'+index).addClass('wrong')
$('<p class="answerTip">正确答案:'+ans+'</p>').appendTo($('#'+id+'-'+index))
}
setTimeout(function (){
$('#'+id+'-'+index).removeClass('correct')
$('#'+id+'-'+index).removeClass('wrong')
}, 5000);
})
}else if(type=="X"){
var correctAnsText = correctAnswer
var choice = ""
$('input[name="singelChoice-'+id+'"]:checked').each(function (){
choice += $(this).val()
})
console.log(choice)
console.log(correctAnsText)
var btn = $('#showSingle-'+id).addClass('noDisplay')
ansCon.fadeIn(100)
for(var i=0;i<choice.length;i++){
var showCorrect = answers.children('#'+correctAnsText[i])
var showChoice = answers.children('#'+choice[i])
if(correctAnsText.indexOf(choice[i])!=-1){
showChoice.addClass('correct')
}else{
showChoice.addClass('wrong')
}
}
for(var i=0;i<correctAnsText.length;i++){
console.log(i)
var showCorrect = answers.children('#'+correctAnsText[i])
$('<p class="answerTip">✓</p>').appendTo(showCorrect)
}
answers.children('label').each(function (){
var a = $(this)
setTimeout(function (){
removeBackground(a)
}, 4000);
setTimeout(function (){
a.removeClass('no-background')
a.removeClass('correct')
a.removeClass('wrong')
}, 5000);
})
}else if(type=="TK"){
$('#showSingle-'+id).addClass('noDisplay')
ansCon.fadeIn(100)
var answers = correctAnswer
console.log(answers[0])
var form =$('#form-'+id).serializeArray()
var myAns = []
console.log(form[0]['value'])
for(var i=0;i<form.length;i++){
var input = $('#form-'+id).children('#'+id+'-'+i)
if(answers[i] != form[i]['value']){
$('<p class="wrong TKcheck">'+answers[i]+'</p>').insertAfter(input)
}else{
$('<p class="correct TKcheck">'+answers[i]+'</p>').insertAfter(input)
}
}
}
}
function removeBackground(obj){
obj.addClass('no-background')
}