打开/关闭搜索
搜索
打开/关闭菜单
1.3K
143
375
74K
医林拾薪
导航
首页
医林拾薪论坛
最近更改
随机页面
特殊页面
上传文件
快捷入口
医学本科题库
待翻译的英语单词
待补充英文的名词
小工具
导出ANKI卡组
本科题库创建向导
题库录入工具
录入英语单词
录入名称解释
Toggle preferences menu
通知
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。
user-interface-preferences
个人工具
登录
查看“MediaWiki:Gadget-tikuRenderModule.js”的源代码
MediaWiki界面页面
分享此页面
查看
阅读
查看源代码
查看历史
associated-pages
消息
讨论
更多操作
←
MediaWiki:Gadget-tikuRenderModule.js
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
此页面为本wiki上的软件提供界面文本,并受到保护以防止滥用。 如欲修改所有wiki的翻译,请访问
translatewiki.net
上的MediaWiki本地化项目。
您无权编辑此JavaScript页面,因为编辑此页面可能会影响所有访问者。
您可以查看和复制此页面的源代码。
/*<%-- [PAGE_INFO] comment = #Please do not remove this struct. It's record contains some important information of edit. This struct will be removed automatically after you push edits.# pageTitle = #MediaWiki:Gadget-tikuRenderModule.js# pageID = #3426# revisionID = #69839# contentModel = #javascript# contentFormat = #text/javascript# [END_PAGE_INFO] --%>*/ //主函数 function renderTimuFromSessionStorage(){ var timuList = gDomTimuList() console.log(timuList) var order = timuList.order var timu = timuList.timu var errors = timuList.errors var repeatSource = timuList.repeatSource for(var i=0;i<order.length;i++){ if(order[i].isError){ var errorWidget = new OO.ui.MessageWidget( { type: 'error', showClose:true, label: 'id='+i+'的题目加载错误,错误信息:'+errors[i].info.name+':'+errors[i].info.message+'\n'+'对应文本:'+errors[i].dataText } ) render(i,'A',$('<di></div>').append(errorWidget.$element,'<hr>')) }else{ var dataJSON = timu[i].dataJSON var o = newTimu(i,dataJSON,{})[dataJSON.type]() render(i,dataJSON.type,o) var needCheck = $('#noRepeatCheck').length<=0 if(repeatSource[i]!==undefined&&needCheck){ var warningWidget = new OO.ui.MessageWidget( { type: 'warning', label: '本题与本页面id为'+repeatSource[i]+'的题目source参数重复,本参数重复可能引起错误,请检查并修改!' } ) render(i,'A',warningWidget.$element) } } } } //题目渲染函数 //生成info function infoInline(info){ return $('<div class="info">'+info+'</div>') } //单行题干的处理titleInline(type, source, title) //生成titleGroup function titlesGroup(titlesList){ var group = $('<div class="titlesGroup"></div>') for(var i=0;i<titlesList.length;i++){ group.append(titlesList[i]) } return group } //生成titleInline function titleInline(id, type,originalSource, sourceSuffix,title, classes){ classes = classes===undefined?'':classes return $('<div id="title-'+id+'" class="'+classes+'"></div>').append( titleInlineType(type), titleInlineSource(originalSource,sourceSuffix), titleInlineTitle(title) ) } function titleInlineType(type){ var typeChinese = { A:'A', A2:'A2', A3:'A3', B:'B', C:'C', X:'X', TK:'填空', PD:'判断', MJ:'名解' } return $('<p class="type">'+typeChinese[type]+'</p>') } //从有中文的source中提取最后一个连续数字作为真实的source function getRealSource(source){ console.log(source) var getContinueNumber = source.match(/[0-9]+/g) var splitContinueNumber = source.split(/[0-9]+/g) var realSource = getContinueNumber[getContinueNumber.length-1]*1 var prefix = '' for(var i=0;i<getContinueNumber.length;i++){ prefix += splitContinueNumber[i] } return {prefix:prefix,source:realSource} } //返回source的obj function titleInlineSource(originalSource, suffix){ var realSource = getRealSource(originalSource) var prefix = realSource.prefix var source = realSource.source var suffix = suffix === undefined ? '':'-'+suffix return $('<p class="source">'+prefix+source+suffix+'</p>') } //返回sourceRange的obj function rangeInline(originalSource, sourceRange, type){ var source = getRealSource(originalSource).source var end = source*1+sourceRange*1 -1 var rangeText = '第 '+source +' 到 ' + end + ' 题' var suffix = type==='B'?'共用备选答案':'共用题干' return $('<div class="sourceRange">'+rangeText + suffix +'</div>') } //返回title 的 obj function titleInlineTitle(title){ return $('<p class="title">'+title+'</p>') } //生成B、C型题的选择框 function dropDownInputWidget(id, availabelOptions){ var options = [] for(var i=0;i<availabelOptions.length;i++){ options.push({ data:availabelOptions[i], label:availabelOptions[i] }) } return new OO.ui.DropdownInputWidget( { name:'dropdown-input-'+id, options: options, classes:['dorpdown'] } ).$element } //生成options(options 是 Map对象) function optionsGroup(type,id,options){ var flexClass = (type==='B')||(type==='C') ? 'optionsGroup-flex':'' var inputType = type==='X' ? 'checkbox':'radio' var optionGroupObj = $('<div class="optionsGroup '+flexClass+'"></div>') options.forEach(function(value, key, map){ optionGroupObj.append(optionInline(id, key, value, !((type==='B')||(type==='C')), inputType)) }) return optionGroupObj } //生成optionInline function optionInline(id, option, content,input,inputType){ console.log(input) var input = input ? $('<input id="option-input-'+id+'-'+option+'" name="optionsGroup-' + id + '" type="'+inputType+'" value="' + option + '" />'):'' var optionLabel = $('<label for="option-input-'+id+'-'+option+'">'+option+'. </label>') var contentLabel = $('<label for="option-input-'+id+'-'+option+'">'+content+'</label>') return $('<div id="option-'+id+'-'+option+'" class="optionInline"></div>').append(input,optionLabel,contentLabel) } //清理json中的choice(清除空项并排序),接收Obj, function cleanOptions(options){ return sortDicByKey(filterEmptyEntries(options)) //返回一个 Map 对象 } //生成buttonGroup function buttonGroup(showSubmitBtn, showEditBtn, id, type, correctAnswer, hoverTarget){ console.log(showEditBtn) var buttonGroupObj = $('<div class="buttonGroup"></div>') if(showSubmitBtn){buttonGroupObj.append( new OO.ui.ButtonWidget( { id:'showThisAnswer-'+id, label: '提交', flags: [ 'progressive' ] } ).$element.bind("click",function (){ showThisAnswer(id,type,correctAnswer) }) )} if(showEditBtn){ buttonGroupObj.append( // $('<a class="editThisBtn" style="" href="javascript:void(0)"><span class="" id="editThis-' + id + '">题目有误?点击编辑本题</span></a>'), new OO.ui.ButtonWidget( { id:'editThis-' + id, classes:['editThisBtn'], framed: false, flags: [ 'progressive' ], icon: 'edit', label: '题目有误?点击编辑本题' } ).$element.bind("click",function (){ editThis(id) }) ) hoverTarget.hover(function () { buttonGroupObj.children('.editThisBtn').fadeIn(10) },function (){ buttonGroupObj.children('.editThisBtn').fadeOut(70) }) } return buttonGroupObj } //生成subject 的form, 顺序items顺序添加 (title, options, buttonGroup) function subjectFrom(id, items, title, options, buttonGroup){ var form = $('<form id="timuFrom-'+id+'" class="subjectForm"></form>') for(var i=0;i<items.length;i++){ form.append(items[i]) } return form } //resultGroup: answer和explain的显示框 function resultGroup(id, items, answerInline,explainInline){ var group = $('<div id="resultGroup-'+id+'" class="resultGroup"></div>') for(var i=0;i<items.length;i++){ group.append(items[i]) } return group } //生成answerInline function answerInline(answer){ return $('<div class="answerInline"><label>正确答案:</label>'+answer+'</div>') } //生成explainInline function explainInline(explain){ return $('<div class="explainInline"><label>解析:</label>'+explain+'</div>') } //生成填空输入框 function fillBlank(id, title, pos, classes){ console.log(pos) var posReg = new RegExp(pos,'g') var blankLen = title.match(posReg).length var split = title.split(posReg) console.log(blankLen) var newTitle = '' for(var i=0;i<(blankLen+split.length);i++){ if(i%2===0){ newTitle += '<p class="title">'+split[Math.floor(i/2)]+'</div>' }else{ newTitle += new OO.ui.TextInputWidget( { name:'textInput-'+id+'-'+Math.floor(i/2), id:'textInput-'+id+'-'+Math.floor(i/2), classes:classes } ).$element.prop('outerHTML') } } return newTitle } function newTimu(id,json, settings){ settings = json.settings===undefined||json.isA3 ? settings:json.settings//检测json是否带有settings或者是否为A3子题目 parent = settings.parent === undefined ? '' : settings.parent showHr = settings.showHr == undefined ? true : settings.showHr showSubmitBtn = settings.showSubmitBtn === undefined ? true : settings.showSubmitBtn showEditBtn = settings.showEditBtn === undefined ? true : settings.showEditBtn showBtnGroup = settings.showBtnGroup === undefined? true:settings.showBtnGroup var o = new Object() o.type = json.type o.pos = json.pos o.inputBox = json.inputBox o.source = json.source o.sourceRange = json.sourceRange o.info = json.info o.title = json.title o.options = json.choices console.log(o.options) //将choice 统一为Array的转换为obj if(typeOfObj(o.options)==='[object Array]'&&o.options.length===1&&o.type!=='A3'){ o.options = o.options[0] } o.options = o.options!==undefined? cleanOptions(o.options):'' console.log(o.options) o.answer = json.answer o.explain = json.explain o.temp = { main:$('<div name="timu-'+(id+1)+'" id="'+id+'" class="type'+o.type+' timuContainer"><p class="timuID">'+id+'</p></div>'), subject:$('<form class="subject"></form>'), range:$('<div class="sourceRange"></div>'), info:$('<div class="info"></div>'), titleCon:$('<div class="titleContainer"></div>'), type:$('<p class="source"></p>'), source:$('<p class="source"></p>'), title:$('<p class="title"></p>'), options:$('<div class="options"></div>'), btn:$('<button type="button" class="button-small button-pill button button-caution" id="showSingle-' + id + '" class="showSingleBtn">提交</button>'), editBtn:$('<a class="editThisButton" style="display:none;font-size: 14px;margin-left: 5px" href="javascript:void(0)"><span class="" id="editThis-' + id + '">题目有误?点击编辑本题</span></a>'), 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.parent = parent // if(this.type==='A3'){ // $(this).children('.subject').children('.editThisButton').fadeIn(1) // } o.temp.main.hover(function () { $('editThis-' + id).fadeIn(10) },function (){ $('editThis-' + id).fadeOut(70) }) o.A = function () { //subjectForm var optionsGroupObj = optionsGroup(this.type, id, this.options) var titleInlineObj = titleInline(id, this.type,this.source,undefined,this.title,'titleInline') var buttonGroupObj = showBtnGroup? buttonGroup(showSubmitBtn, showEditBtn, id, this.type, this.answer, this.temp.main):'' var subjectForm = subjectFrom(id, [titleInlineObj, optionsGroupObj, buttonGroupObj]) //resultGroupObj var answerInlineObj = answerInline(this.answer) var explainInlineObj = this.explain === undefined || this.explain === '' ? '暂无解析' : explainInline(this.explain) var resultGroupObj = resultGroup(id, [answerInlineObj, explainInlineObj]) this.temp.main.append(subjectForm,resultGroupObj) if(showHr){this.temp.main.append('<hr>')} return this.temp.main } o.A2 = function () { //subjectForm var optionsGroupObj = optionsGroup(this.type, id, this.options) var titleInlineObj = titleInline(id, this.type,this.source,undefined,this.title,'titleInline') var buttonGroupObj = buttonGroup(showSubmitBtn, showEditBtn, id, this.type, this.answer, this.temp.main) var subjectForm = subjectFrom(id, [titleInlineObj, optionsGroupObj, buttonGroupObj]) //resultGroupObj var answerInlineObj = answerInline(this.answer) var explainInlineObj = this.explain === undefined || this.explain === '' ? '暂无解析' : explainInline(this.explain) var resultGroupObj = resultGroup(id, [answerInlineObj, explainInlineObj]) this.temp.main.append(subjectForm,resultGroupObj) if(showHr){this.temp.main.append('<hr>')} return this.temp.main } o.A3 = function () { console.log(settings) var realSource = getRealSource(json.source) var sourcePrefix = realSource.prefix===''?'':realSource.prefix //subjectForm var range = rangeInline(this.source, this.sourceRange) var info = infoInline(this.info) var subTitlesList = [] for(var i=0;i<this.title.length;i++){ if(this.explain[i]==undefined){ this.explain[i] = '暂无解析' } var data = { 'isA3':true, "type":"A", "source":sourcePrefix+realSource.source+'-'+(i+1), "title":this.title[i], "answer":this.answer[i], "explain":this.explain[i], "choices":this.options.get(i+''), } console.log(data) console.log(this.options) subTitlesList.push(newTimu(id+'-'+i,data,{ showHr:false, showEditBtn:false, showSubmitBtn:false, showBtnGroup:false }).A()) } console.log(this.answer) var buttonGroupObj = buttonGroup(true, false, id, this.type, this.answer, this.temp.main) console.log(buttonGroupObj) var subjectFormObj = subjectFrom(id, [subTitlesList,buttonGroupObj]) this.temp.main.append(range,info, subjectFormObj) this.temp.main.append('<hr>') return this.temp.main } o.B = function () { var realSource = getRealSource(json.source) var sourcePrefix = realSource.prefix===''?'':realSource.prefix //subjectForm var range = rangeInline(this.source, this.sourceRange) var optionsGroupObj = optionsGroup(this.type, id, this.options) var titleInlineList = [] for(var i=0;i<this.title.length;i++){ var dropdown = dropDownInputWidget(id+'-'+i, mapKeysList(this.options)) var titleInlineObj = titleInline(id+'-'+i, this.type, json.source, i, this.title[i],'titleInline') titleInlineObj.append(dropdown) titleInlineList.push(titleInlineObj) } var titlesGroupObj = titlesGroup(titleInlineList) var buttonGroupObj = buttonGroup(showSubmitBtn, showEditBtn, id, this.type, this.answer, this.temp.main) var subjectForm = subjectFrom(id, [optionsGroupObj, titlesGroupObj, buttonGroupObj]) //resultGroupObj var resultGroupList = [] for(var i=0;i<this.answer.length;i++){ var answerInlineObj = answerInline(this.answer[i]) var explainInlineObj = this.explain[i] === undefined || this.explain[i] === '' ? '暂无解析' : explainInline(this.explain[i]) resultGroupList.push( '<b>'+sourcePrefix+realSource.source+'-'+i+'</b>', $('<div style="margin-left:10px"></div>').append(answerInlineObj), $('<div style="margin-left:10px"></div>').append(explainInlineObj) ) } var resultGroupObj = resultGroup(id, resultGroupList) this.temp.main.append(range ,subjectForm,resultGroupObj) if(showHr){this.temp.main.append('<hr>')} return this.temp.main } o.C = function () { var realSource = getRealSource(json.source) var sourcePrefix = realSource.prefix===''?'':realSource.prefix //subjectForm var range = rangeInline(this.source, this.sourceRange) var optionsGroupObj = optionsGroup(this.type, id, this.options) var titleInlineList = [] for(var i=0;i<this.title.length;i++){ var dropdown = dropDownInputWidget(id+'-'+i, mapKeysList(this.options)) var titleInlineObj = titleInline(id+'-'+i, this.type, json.source, i, this.title[i],'titleInline') titleInlineObj.append(dropdown) titleInlineList.push(titleInlineObj) } var titlesGroupObj = titlesGroup(titleInlineList) var buttonGroupObj = buttonGroup(showSubmitBtn, showEditBtn, id, this.type, this.answer, this.temp.main) var subjectForm = subjectFrom(id, [titlesGroupObj, optionsGroupObj, buttonGroupObj]) //resultGroupObj var resultGroupList = [] for(var i=0;i<this.answer.length;i++){ var answerInlineObj = answerInline(this.answer[i]) var explainInlineObj = this.explain[i] === undefined || this.explain[i] === '' ? '暂无解析' : explainInline(this.explain[i]) resultGroupList.push( '<b>'+sourcePrefix+realSource.source+'-'+i+'</b>', $('<div style="margin-left:10px"></div>').append(answerInlineObj), $('<div style="margin-left:10px"></div>').append(explainInlineObj) ) } var resultGroupObj = resultGroup(id, resultGroupList) this.temp.main.append(range ,subjectForm,resultGroupObj) if(showHr){this.temp.main.append('<hr>')} return this.temp.main } o.X = function () { //subjectForm var optionsGroupObj = optionsGroup(this.type, id, this.options) var titleInlineObj = titleInline(id, this.type,this.source,undefined,this.title,'titleInline') var buttonGroupObj = showBtnGroup? buttonGroup(showSubmitBtn, showEditBtn, id, this.type, this.answer, this.temp.main):'' var subjectForm = subjectFrom(id, [titleInlineObj, optionsGroupObj, buttonGroupObj]) //resultGroupObj var answerInlineObj = answerInline(this.answer) var explainInlineObj = this.explain === undefined || this.explain === '' ? '暂无解析' : explainInline(this.explain) var resultGroupObj = resultGroup(id, [answerInlineObj, explainInlineObj]) this.temp.main.append(subjectForm,resultGroupObj) if(showHr){this.temp.main.append('<hr>')} return this.temp.main } o.PD = function () { var dic = { right: ['对', '正确', 't', '✓', '√', '1', 'true'], wrong: ['错', '错误', '×', 'x', 'f', 'false', 'wrong', '0'] } this.temp.type.text('判断') this.temp.source.text(json.source) this.temp.title.html(json.title) this.temp.explain.nextAll('.explain').html(json.explain) var ans = '' var ansOption = '' if(isInArray(dic.right, json.answer.toLowerCase())){ ans = '正确' ansOption = 'A' }else if(isInArray(dic.wrong, json.answer.toLowerCase())){ ans = '错误' ansOption = 'B' }else { ans = '系统错误:该判断题答案不符合标准格式' } //subjectForm var option = new Map() option.set('A', '正确') option.set('B', '错误') var optionsGroupObj = optionsGroup(this.type, id, option) var titleInlineObj = titleInline(id, this.type,this.source,undefined,this.title,'titleInline') var buttonGroupObj = showBtnGroup? buttonGroup(showSubmitBtn, showEditBtn, id, 'A', ansOption, this.temp.main):'' var subjectForm = subjectFrom(id, [titleInlineObj, optionsGroupObj, buttonGroupObj]) //resultGroupObj var answerInlineObj = answerInline(ans) var explainInlineObj = this.explain === undefined || this.explain === '' ? '暂无解析' : explainInline(this.explain) var resultGroupObj = resultGroup(id, [answerInlineObj, explainInlineObj]) this.temp.main.append(subjectForm,resultGroupObj) if(showHr){this.temp.main.append('<hr>')} return this.temp.main } o.TK = function () { var tkTitle = fillBlank(id, this.title, this.pos, ['textInput-tk']) var titleInlineObj = titleInline(id, this.type,this.source,undefined,tkTitle, 'titleInline-no-flex') titleInlineObj.children('.textInput-tk').each(function(i,v){ console.log(i,v) $(this).children('input').css( 'display','inline' ) $(this).children('input').css( 'width','200px' ) }) var buttonGroupObj = showBtnGroup? buttonGroup(showSubmitBtn, showEditBtn, id, this.type, this.answer, this.temp.main):'' var subjectForm = subjectFrom(id, [titleInlineObj, buttonGroupObj]) this.temp.main.append(subjectForm) if(showHr){this.temp.main.append('<hr>')} return this.temp.main } o.MJ = function () { var mjTitle = '' if(this.inputBox===0){ mjTitle = json.title + ':<span class="blur" tabindex="0" style="display:inline;outline=0;" onclick="">' + json.answer +'</span>' }else{ mjTitle = fillBlank(id, this.title+':()', '()', ['textInput-mj']) } var titleInlineObj = titleInline(id, this.type,this.source,undefined,mjTitle, 'titleInline-no-flex') titleInlineObj.children('.textInput-mj').each(function(i,v){ console.log(i,v) $(this).children('input').css( 'display','inline' ) $(this).children('input').css( 'width','auto' ) }) var buttonGroupObj = this.inputBox!==0 ? buttonGroup(showSubmitBtn, showEditBtn, id, 'TK', [this.answer], this.temp.main):'' var subjectForm = subjectFrom(id, [titleInlineObj, buttonGroupObj]) this.temp.main.append(subjectForm) if(showHr){this.temp.main.append('<hr>')} return this.temp.main } return o } function getSelectedAnswer(id){ var data = formToJSON('#timuFrom-'+id,true) return data } function showThisAnswer(id,type,correctAnswer){ var subjectCon = $('#'+id) var titleCon = subjectCon.children('.subject').children('.titleContainer') var resultGroup = $('#resultGroup-'+id) resultGroup.fadeIn(100) var answers = subjectCon.children('.subject').children('.options') $('#showThisAnswer-'+id).fadeOut(1) if(type==="A" || type ==='A2'){ var optionGroupID = 'optionsGroup-'+id var optionInlinePrefixID = 'option-'+id var usersChoice = getSelectedAnswer(id)[optionGroupID] var correctDivObj = $('#'+optionInlinePrefixID + '-' + correctAnswer) var usersChoiceDivObj = $('#'+optionInlinePrefixID + '-' + usersChoice) if(usersChoice===correctAnswer){ correctDivObj.addClass('correct') }else{ correctDivObj.addClass('correct') usersChoiceDivObj.addClass('wrong') } }else if(type==='A3'){ for(var i=0;i<correctAnswer.length;i++){ //以下与A型题时一样的代码,知识用subID替换ID变量 showThisAnswer(id+'-'+i,'A',correctAnswer[i]) } } else if(type==='B'){ var dropDownInputPrefix = 'dropdown-input-'+id +'-' var usersChoice = getSelectedAnswer(id) console.log(usersChoice) for(var i in usersChoice){ var dorpdownID = i.replace(dropDownInputPrefix,'')//获取子ID var subTimuID = id+'-'+dorpdownID var thisTimuUsersChoice = usersChoice[i] var thisTimuCorrectAnswer = correctAnswer[dorpdownID] var subTimuDiv = $('#title-'+subTimuID) if(thisTimuUsersChoice===thisTimuCorrectAnswer){ subTimuDiv.addClass('correct') }else{ subTimuDiv.addClass('wrong') subTimuDiv.append('<label class="answerTip">正确答案:'+thisTimuCorrectAnswer+'</label>') } } } else if(type=="C"){ var dropDownInputPrefix = 'dropdown-input-'+id +'-' var usersChoice = getSelectedAnswer(id) console.log(usersChoice) for(var i in usersChoice){ var dorpdownID = i.replace(dropDownInputPrefix,'')//获取子ID var subTimuID = id+'-'+dorpdownID var thisTimuUsersChoice = usersChoice[i] var thisTimuCorrectAnswer = correctAnswer[dorpdownID] var subTimuDiv = $('#title-'+subTimuID) if(thisTimuUsersChoice===thisTimuCorrectAnswer){ subTimuDiv.addClass('correct') }else{ subTimuDiv.addClass('wrong') subTimuDiv.append('<label class="answerTip">正确答案:'+thisTimuCorrectAnswer+'</label>') } } }else if(type=="X"){ var optionGroupID = 'optionsGroup-'+id var optionInlinePrefixID = 'option-'+id var usersChoice = getCheckBoxValue(optionGroupID).sort() correctAnswer = correctAnswer.match(/[A-Z]/g).sort() var lenCorrect = correctAnswer.length var lenUser = usersChoice.length console.log(correctAnswer) for(var i=0;i<lenUser;i++){ console.log(isInArray(correctAnswer, usersChoice[i]),usersChoice[i] ,correctAnswer) if(!isInArray(correctAnswer, usersChoice[i])){ $('#'+optionInlinePrefixID + '-' + usersChoice[i]).addClass('wrong') } } for(var i=0;i<lenCorrect;i++){ if(!isInArray(usersChoice,correctAnswer[i])){ $('#'+optionInlinePrefixID + '-' + correctAnswer[i]).addClass('notChoiced') }else { $('#'+optionInlinePrefixID + '-' + correctAnswer[i]).addClass('correct') } } }else if(type=="TK"){ var textInputPrefix = 'textInput-'+id+'-' var usersChoice = getSelectedAnswer(id) for(var i in usersChoice){ var inputID = i.replace(textInputPrefix,'') console.log('#'+i) var corrcetAnswerText = correctAnswer[inputID]===undefined?'暂无答案':correctAnswer[inputID] if(usersChoice[i]===correctAnswer[inputID]){ $('#'+i).html('<label class="answerTip correct">'+corrcetAnswerText+'</label>') }else{ $('#'+i).after('<label class="answerTip wrong">'+corrcetAnswerText+'</label>') } } } } function removeBackground(obj){ obj.addClass('no-background') } //DOM操作 //获取checkbox值 function getCheckBoxValue(name) { var ids = $('input:checkbox[name="'+name+'"]:checked'); var data = []; for (var i = 0; i < ids.length; i ++) { //利用三元运算符去点 data.push(ids[i].value) } return data } //将题目放在模板加载位置 function addAfterIDData(id,content) { var data = $('.data') content.insertAfter(data[id]) } //渲染题目 function render(id,type,obj,parent,isAfter){ parent =parent !==undefined ?parent : '#subjectContainer-'+type if(typeof(parent)!=='object'){ parent = $(parent) } if(isObjExist(parent)){ if(isAfter){ parent.after(obj) }else { obj.appendTo(parent) } }else { addAfterIDData(id,obj) } } //基础函数 //判断函数 function isObjExist(t){ return $(t).length>0 } function isInArray (arr, value) { for (var i = 0; i < arr.length; i++) { if (value === arr[i]) { return true } } return false } //数据查询函数 function dicLen(dic){ var count=0; for(var key in dic){ console.log(key+'='+dic[key]); count++; } return count } //html操作函数 function entityToString(entity){ var div=$('<div></div>'); div.html(entity) var res=div.html(); console.log(entity,'->',res); return res; } //获取map中键的列表 function mapKeysList(map){ return Array.from(map.keys()) } //数据清理 //去除字典中的空值 function filterEmptyEntries(dic){ console.log(Object.fromEntries( Object.entries(dic).filter(function(key, value){return value !== null && value !== undefined && value.length !== 0}) )) return Object.fromEntries( Object.entries(dic).filter(function(key, value){return value !== null && value !== undefined && value.length !== 0}) ) } //排序字典并返回一个map对象 function sortDicByKey(dic){ var sort = Object.keys(dic).sort() var map = new Map() for(var i=0;i<sort.length;i++){ map.set(sort[i],dic[sort[i]]) } return map }
返回
MediaWiki:Gadget-tikuRenderModule.js
。