打开/关闭菜单
Toggle preferences menu
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

MediaWiki:Gadget-tikuRenderModule.js:修订间差异

MediaWiki界面页面
无编辑摘要
无编辑摘要
第4行: 第4行:
     var subjectCon = $('.subjectContainer')
     var subjectCon = $('.subjectContainer')
     console.log(data)
     console.log(data)
     $('<button id="singleChoiceReset">重置答题状态</button>').prependTo(subjectCon)
     $('<button id="typeAReset">重置答题状态</button>').prependTo(subjectCon)
     $('#singleChoiceReset').bind("click",function (){
     $('#typeAReset').bind("click",function (){
         reset(dataLength,"A")
         reset(dataLength,"A")
     })
     })
第13行: 第13行:
         var jsonData = $.parseJSON(singleData)
         var jsonData = $.parseJSON(singleData)
         console.log(jsonData)
         console.log(jsonData)
        console.log(jsonData.type)
         if(jsonData.type=='A'){
         if(jsonData.type=='A'){
             typeAModule(i)
             typeAModule(i)
             typeAChoice(jsonData,i)
             typeAChoice(jsonData,i)
        }else if(jsonData.type=='B'){
            typeBModule(i)
            typeBChoice(jsonData,i)
         }
         }
     }
     }


}
}
function removeBackground(obj){
    obj.addClass('no-background')
}
function showChoiceAnswer(id,type){
    var subjectCon = $('#subjectContainer-'+type).children('#'+id)
    var titleCon = subjectCon.children('.subject').children('.titleContainer')
    var ansCon = subjectCon.children('.ansContainer')
    var answers = subjectCon.children('.subject').children('.answers')
    var correctAns= ansCon.children('.correctAnswer')
    if(type=="A"){
        var correctAnsText = correctAns.text()
        var choice = $('input[name="singelChoice-'+id+'"]:checked').val();
        console.log(choice)
        var showCorrect = answers.children('#'+correctAnsText)
        var showChoice = answers.children('#'+choice)
        var btn = $('#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=="B"){
        console.log(titleCon)
        titleCon.children('div').each(function (index,i){
            console.log(i)
            var subTitleID = $(i).attr('id')
            var ans = $('#ans-'+subTitleID).text().split(':')[1]
            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);
        })
    }
}
function reset(length,type){
    for(var id=0;id<length;id++){
        var choice = $('input:radio').attr("checked",false)
        var subjectCon = $('#subjectContainer-'+type).children('#'+id)
        var ansCon = subjectCon.children('.ansContianer')
        var btn = $('#showSingle-'+id).removeClass('noDisplay')
        ansCon.fadeOut(100)
    }
}
//A型题
function typeAChoice(json,id){
function typeAChoice(json,id){
     var subjectCon = $('#subjectContainer-A').children('#'+id)
     var subjectCon = $('#subjectContainer-A').children('#'+id)
     var titleCon = subjectCon.children('.subject').children('.titleContainer')
     var titleCon = subjectCon.children('.subject').children('.titleContainer')
     var correctCon = subjectCon.children('.correctContainer')
     var ansCon = subjectCon.children('.ansContianer')
     var source = titleCon.children('.source').text(json.source)
     var source = titleCon.children('.source').text(json.source)
     var title = titleCon.children('.title').text(json.title)
     var title = titleCon.children('.title').text(json.title)
     var correctAns = correctCon.children('.correctAnswer').text(json.answer)
     var correctAns = ansCon.children('.correctAnswer').text(json.answer)
     var exp = correctCon.children('.explain').text(json.explain)
     var exp = ansCon.children('.explain').text(json.explain)
     var answers = subjectCon.children('.subject').children('.answers')
     var answers = subjectCon.children('.subject').children('.answers')
     var char = ['A: ','B: ','C: ','D: ','E: ',]
     var char = ['A: ','B: ','C: ','D: ','E: ',]
第40行: 第111行:
}
}
function typeAModule(id){
function typeAModule(id){
     var main = $('<div id="'+id+'"></div>')
     var main = $('<div id="'+id+'" class="typeA"></div>')
     var subject = $('<div class="subject">' +
     var subject = $('<div class="subject">' +
         '<div class="titleContainer"><p class="source"></p><p class="title"></p></div>' +
         '<div class="titleContainer"><p class="source"></p><p class="title"></p></div>' +
         '<div class="answers"></div></div>').appendTo(main)
         '<div class="answers"></div></div>').appendTo(main)
     var showButton = $('<button id="showSingle-'+id+'" class="showSingleBtn">提交</button>').appendTo(main)
     var showButton = $('<button id="showSingle-'+id+'" class="showSingleBtn">提交</button>').appendTo(main)
     var correctCon = $('<div id="correctContainer" class="correctContainer noDisplay">' +
     var ansCon = $('<div id="ansContianer" class="ansContianer noDisplay">' +
         '            <p style="display:inline;"><b>正确答案:</b></p>\n' +
         '            <p style="display:inline;"><b>正确答案:</b></p>\n' +
         '            <p class="correctAnswer"></p><br><p><b>解析: </b></p>\n' +
         '            <p class="correctAnswer"></p><br><p><b>解析: </b></p>\n' +
第51行: 第122行:
     main.appendTo($('#subjectContainer-A'))
     main.appendTo($('#subjectContainer-A'))
     $("#showSingle-"+id).bind("click",function (){
     $("#showSingle-"+id).bind("click",function (){
         showAnswer(id,'A')
         showChoiceAnswer(id,'A')
     })
     })
}
}
function removeBackground(obj){
//B型题
     obj.addClass('no-background')
function typeBChoice(json,id){
}
     var subjectCon = $('#subjectContainer-B').children('#'+id)
function showAnswer(id,type){
     var subject = subjectCon.children('.subject')
     var subjectCon = $('#subjectContainer-'+type).children('#'+id)
    var titleCon = subjectCon.children('.subject').children('.titleContainer')
     var correctCon = subjectCon.children('.correctContainer')
     var ansCon = subjectCon.children('.ansContianer')
    var source = json.source
    var range = json.sourceRange
    var end = source *1 + range*1 -1
    var title = json.title
    var correctAns = json.answer
    var exp = ansCon.children('.explain').text(json.explain)
     var answers = subjectCon.children('.subject').children('.answers')
     var answers = subjectCon.children('.subject').children('.answers')
     var correctAns= correctCon.children('.correctAnswer').text()
     var char = ['A: ','B: ','C: ','D: ','E: ',]
     var choice = $('input[name="singelChoice-'+id+'"]:checked').val();
    var sourceRange = subject.children('.sourceRange').text('第 '+source+' 到 '+end+' 题')
     console.log(choice)
     for(var n=0;n<title.length;n++){
     var showCorrect = answers.children('#'+correctAns)
        var text = title[n].replace("()",function(a){
    var showChoice = answers.children('#'+choice)
            return "(<select> " +
    var btn = $('#showSingle-'+id).addClass('noDisplay')
                "<option value ='A'>A</option>" +
    correctCon.fadeIn(100)
                "<option value ='B'>B</option>" +
     if(choice==correctAns){
                "<option value ='C'>C</option>" +
         showCorrect.addClass('correct')
                "<option value ='D'>D</option>" +
    }else{
                "<option value ='E'>E</option>" +
         showCorrect.addClass('correct')
                "</select>)"
        showChoice.addClass('wrong')
        })
        var div = '<div id="'+id+'-'+n+'"><p class="source">'+'T'+(source*1+n)+'</p>'+text+'</div>'
        titleCon.append(div)
     }
     var i = 0
    for(var key in json.choices){
        if(json.choices[key].length>0){
            var label = '<li id="'+key+'">'+char[i]+json.choices[key]+'</li>'
            answers.append(label)
            console.log(label)
        }
        i+=1
     }
    text = ''
    for(var n=0;n<correctAns.length;n++){
         text += '<p id="ans-'+id +'-'+n+'">'+(id*1+n)+':'+correctAns[n]+'</p>'
         ansCon.children('.correctAnswer').html(text)
     }
     }
    setTimeout(function (){
        removeBackground(showChoice)
        removeBackground(showCorrect)
    }, 4000);
    setTimeout(function (){
        showCorrect.removeClass('no-background')
        showChoice.removeClass('no-background')
        showCorrect.removeClass('correct')
        showChoice.removeClass('wrong')
    }, 5000);
}
}
function reset(length,type){
function typeBModule(id){
     for(var id=0;id<length;id++){
     var main = $('<div id="'+id+'" class="typeB"></div>')
        var choice = $('input:radio').attr("checked",false)
    var subject = $('<div class="subject">' +
        var subjectCon = $('#subjectContainer-'+type).children('#'+id)
        '<div class="sourceRange"></div>'+
         var correctCon = subjectCon.children('.correctContainer')
        '<div class="answers"></div>'+
        var btn = $('#showSingle-'+id).removeClass('noDisplay')
        '<div class="titleContainer"></div></div>'
         correctCon.fadeOut(100)
        ).appendTo(main)
     }
    var showButton = $('<button id="showSingle-'+id+'" class="showSingleBtn">提交</button>').appendTo(main)
    var ansCon = $('<div id="ansContianer" class="ansContianer noDisplay">' +
        '            <p style="display:inline;"><b>正确答案:</b></p>\n' +
        '            <p class="correctAnswer"></p><br><p><b>解析: </b></p>\n' +
         '            <p class="explain"></p></div><hr>').appendTo(main)
    main.appendTo($('#subjectContainer-B'))
    $("#showSingle-"+id).bind("click",function (){
         showChoiceAnswer(id,'B')
     })
}
}
setTimeout(function (){
setTimeout(function (){
getdata();
getdata();
},0);
},0);

2022年4月3日 (日) 07:25的版本

function getdata(){
    var data = $('.data')
    var dataLength = data.length
    var subjectCon = $('.subjectContainer')
    console.log(data)
    $('<button id="typeAReset">重置答题状态</button>').prependTo(subjectCon)
    $('#typeAReset').bind("click",function (){
        reset(dataLength,"A")
    })
    for(var i=0;i<dataLength;i++){
        var singleData = $(data[i]).text()
        console.log(singleData)
        var jsonData = $.parseJSON(singleData)
        console.log(jsonData)
        console.log(jsonData.type)
        if(jsonData.type=='A'){
            typeAModule(i)
            typeAChoice(jsonData,i)
        }else if(jsonData.type=='B'){
            typeBModule(i)
            typeBChoice(jsonData,i)
        }
    }

}
function removeBackground(obj){
    obj.addClass('no-background')
}
function showChoiceAnswer(id,type){
    var subjectCon = $('#subjectContainer-'+type).children('#'+id)
    var titleCon = subjectCon.children('.subject').children('.titleContainer')
    var ansCon = subjectCon.children('.ansContainer')
    var answers = subjectCon.children('.subject').children('.answers')
    var correctAns= ansCon.children('.correctAnswer')
    if(type=="A"){
        var correctAnsText = correctAns.text()
        var choice = $('input[name="singelChoice-'+id+'"]:checked').val();
        console.log(choice)
        var showCorrect = answers.children('#'+correctAnsText)
        var showChoice = answers.children('#'+choice)
        var btn = $('#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=="B"){
        console.log(titleCon)
        titleCon.children('div').each(function (index,i){
            console.log(i)
            var subTitleID = $(i).attr('id')
            var ans = $('#ans-'+subTitleID).text().split(':')[1]
            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);
        })
    }

}
function reset(length,type){
    for(var id=0;id<length;id++){
        var choice = $('input:radio').attr("checked",false)
        var subjectCon = $('#subjectContainer-'+type).children('#'+id)
        var ansCon = subjectCon.children('.ansContianer')
        var btn = $('#showSingle-'+id).removeClass('noDisplay')
        ansCon.fadeOut(100)
    }
}
//A型题
function typeAChoice(json,id){
    var subjectCon = $('#subjectContainer-A').children('#'+id)
    var titleCon = subjectCon.children('.subject').children('.titleContainer')
    var ansCon = subjectCon.children('.ansContianer')
    var source = titleCon.children('.source').text(json.source)
    var title = titleCon.children('.title').text(json.title)
    var correctAns = ansCon.children('.correctAnswer').text(json.answer)
    var exp = ansCon.children('.explain').text(json.explain)
    var answers = subjectCon.children('.subject').children('.answers')
    var char = ['A: ','B: ','C: ','D: ','E: ',]
    var i = 0
    for(var key in json.choices){
        if(json.choices[key].length>0){
            var label = '<label id="'+key+'"><input name="singelChoice-'+id+'" type="radio" value="'+key+'" />'+char[i]+json.choices[key]+'</label>'
            answers.append(label)
        }
        i+=1
    }
}
function typeAModule(id){
    var main = $('<div id="'+id+'" class="typeA"></div>')
    var subject = $('<div class="subject">' +
        '<div class="titleContainer"><p class="source"></p><p class="title"></p></div>' +
        '<div class="answers"></div></div>').appendTo(main)
    var showButton = $('<button id="showSingle-'+id+'" class="showSingleBtn">提交</button>').appendTo(main)
    var ansCon = $('<div id="ansContianer" class="ansContianer noDisplay">' +
        '            <p style="display:inline;"><b>正确答案:</b></p>\n' +
        '            <p class="correctAnswer"></p><br><p><b>解析: </b></p>\n' +
        '            <p class="explain"></p></div><hr>').appendTo(main)
    main.appendTo($('#subjectContainer-A'))
    $("#showSingle-"+id).bind("click",function (){
        showChoiceAnswer(id,'A')
    })
}
//B型题
function typeBChoice(json,id){
    var subjectCon = $('#subjectContainer-B').children('#'+id)
    var subject = subjectCon.children('.subject')
    var titleCon = subjectCon.children('.subject').children('.titleContainer')
    var ansCon = subjectCon.children('.ansContianer')
    var source = json.source
    var range = json.sourceRange
    var end = source *1 + range*1 -1
    var title = json.title
    var correctAns = json.answer
    var exp = ansCon.children('.explain').text(json.explain)
    var answers = subjectCon.children('.subject').children('.answers')
    var char = ['A: ','B: ','C: ','D: ','E: ',]
    var sourceRange = subject.children('.sourceRange').text('第 '+source+' 到 '+end+' 题')
    for(var n=0;n<title.length;n++){
        var text = title[n].replace("()",function(a){
            return "(<select> " +
                "<option value ='A'>A</option>" +
                "<option value ='B'>B</option>" +
                "<option value ='C'>C</option>" +
                "<option value ='D'>D</option>" +
                "<option value ='E'>E</option>" +
                "</select>)"
        })
        var div = '<div id="'+id+'-'+n+'"><p class="source">'+'T'+(source*1+n)+'</p>'+text+'</div>'
        titleCon.append(div)
    }
    var i = 0
    for(var key in json.choices){
        if(json.choices[key].length>0){
            var label = '<li id="'+key+'">'+char[i]+json.choices[key]+'</li>'
            answers.append(label)
            console.log(label)
        }
        i+=1
    }
    text = ''
    for(var n=0;n<correctAns.length;n++){
        text += '<p id="ans-'+id +'-'+n+'">'+(id*1+n)+':'+correctAns[n]+'</p>'
        ansCon.children('.correctAnswer').html(text)
    }
}
function typeBModule(id){
    var main = $('<div id="'+id+'" class="typeB"></div>')
    var subject = $('<div class="subject">' +
        '<div class="sourceRange"></div>'+
        '<div class="answers"></div>'+
        '<div class="titleContainer"></div></div>'
        ).appendTo(main)
    var showButton = $('<button id="showSingle-'+id+'" class="showSingleBtn">提交</button>').appendTo(main)
    var ansCon = $('<div id="ansContianer" class="ansContianer noDisplay">' +
        '            <p style="display:inline;"><b>正确答案:</b></p>\n' +
        '            <p class="correctAnswer"></p><br><p><b>解析: </b></p>\n' +
        '            <p class="explain"></p></div><hr>').appendTo(main)
    main.appendTo($('#subjectContainer-B'))
    $("#showSingle-"+id).bind("click",function (){
        showChoiceAnswer(id,'B')
    })
}

setTimeout(function (){
	getdata();
},0);