⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 common.js

📁 giao trinh cong nghe phan mem
💻 JS
📖 第 1 页 / 共 2 页
字号:
function beforeUnload(){    if (document.getElementById("contentFrame").contentDocument.contentForm.isChanged.value=="1")        if (window.confirm("Do you want to save the package?"))            saveChange("saveChange")}function saveChange(action){    document.getElementById("contentFrame").contentDocument.contentForm.isChanged.value = 0    document.getElementById("contentFrame").contentDocument.contentForm.action.value = action;    document.getElementById("contentFrame").contentDocument.contentForm.submit();}function getFeedback(optionId, optionsNum, ideviceId, mode) {    for (i = 0; i< optionsNum; i++) {         if (mode == "multi")            id = "sa" + i + "b" +ideviceId        else            id = "s" + i + "b" +ideviceId        if(i == optionId)            document.getElementById(id).style.display = "block";        else            document.getElementById(id).style.display = "None";    }}// Cloze Field Stuff /////////////////////////////////////////////////// Constants NOT_ATTEMPTED = 0WRONG = 1CORRECT = 2// Functions // Called when a learner types something into a cloze word spacefunction onClozeChange(ele) {    var ident = getClozeIds(ele)[0];    var instant = eval(document.getElementById(        'clozeFlag'+ident+'.instantMarking').value);    if (instant) {        checkAndMarkClozeWord(ele);        // Hide the score paragraph if visible        var scorePara = document.getElementById('clozeScore' + ident);        scorePara.innerHTML = "";    }}// Recieves and marks answers from studentfunction clozeSubmit(ident) {    // Mark all of the words    showClozeScore(ident, 1);    // Hide Submit    toggleElementVisible('submit'+ident);    // Show Restart    toggleElementVisible('restart'+ident);    // Show Show Answers Button    toggleElementVisible('showAnswersButton'+ident);    // Show feedback    toggleClozeFeedback(ident);}// Makes cloze idevice like new :)function clozeRestart(ident) {    // Hide Feedback    toggleClozeFeedback(ident);    // Clear the answers (Also hides score)    toggleClozeAnswers(ident, true);    // Hide Restart    toggleElementVisible('restart'+ident);    // Hide Show Answers Button    toggleElementVisible('showAnswersButton'+ident);    // Show Submit    toggleElementVisible('submit'+ident);}// Show/Hide all answers in the cloze idevice// 'clear' is an optional argument, that forces all the answers to be cleared// whether they are all finished and correct or notfunction toggleClozeAnswers(ident, clear){    // See if any have not been answered yet    var allCorrect = true;    var inputs = getCloseInputs(ident)    if (!clear) {        for (var i=0; i<inputs.length; i++) {            var input = inputs[i];            if (getClozeMark(input) != 2) {                allCorrect = false;                break;            }        }    }    if (allCorrect) {        // Clear all answers        clearClozeInputs(ident, inputs);    } else {        // Write all answers        fillClozeInputs(ident, inputs);    }    // Hide the score paragraph, irrelevant now    var scorePara = document.getElementById('clozeScore' + ident);    scorePara.innerHTML = "";    // If the get score button is visible and we just filled in all the right    // answers, disable it until they clear the scores again.    var getScoreButton = document.getElementById('getScore' + ident);    if (getScoreButton) {        getScoreButton.disabled = !allCorrect;    }}// Shows all answers for a cloze field// 'inputs' is an option argument containing a list of the 'input' elements for// the fieldfunction fillClozeInputs(ident, inputs) {    if (!inputs) {        var inputs = getCloseInputs(ident)    }    for (var i=0; i<inputs.length; i++) {        input = inputs[i];        input.value = getClozeAnswer(input);        markClozeWord(input, CORRECT);        // Toggle the readonlyness of the answers also        input.setAttribute('readonly', 'readonly');    }}// Blanks all the answers for a cloze field// 'inputs' is an option argument containing a list of the 'input' elements for// the fieldfunction clearClozeInputs(ident, inputs) {    if (!inputs) {        var inputs = getCloseInputs(ident)    }    for (var i=0; i<inputs.length; i++) {        input = inputs[i];        input.value="";        markClozeWord(input, NOT_ATTEMPTED);        // Toggle the readonlyness of the answers also        input.removeAttribute('readonly');    }}// Marks a cloze word in view mode.// Returns NOT_ATTEMPTED, CORRECT, or WRONGfunction checkAndMarkClozeWord(ele) {    var result = checkClozeWord(ele);    if (result != '') {        markClozeWord(ele, CORRECT);        ele.value = result;        return CORRECT;    } else if (!ele.value) {        markClozeWord(ele, NOT_ATTEMPTED);        return NOT_ATTEMPTED;    } else {        markClozeWord(ele, WRONG);        return WRONG;    }}// Marks a cloze question (at the moment just changes the color)// 'mark' should be 0=Not Answered, 1=Wrong, 2=Rightfunction markClozeWord(ele, mark) {    switch (mark) {        case 0:            // Not attempted            ele.style.backgroundColor = "";            break;        case 1:            // Wrong            ele.style.backgroundColor = "red";            break;        case 2:             // Correct            ele.style.backgroundColor = "lime";            break;    }    return mark}// Return the last mark applied to a wordfunction getClozeMark(ele) {    // Return last mark applied    switch (ele.style.backgroundColor) {        case 'red':   return 1; // Wrong        case 'lime':  return 2; // Correct        default:      return 0; // Not attempted    }}// Decrypts and returns the answer for a certain cloze field wordfunction getClozeAnswer(ele) {    var idents = getClozeIds(ele)    var ident = idents[0]    var inputId = idents[1]    var answerSpan = document.getElementById('clozeAnswer'+ident+'.'+inputId);    var code = answerSpan.innerHTML;    code = decode64(code)    code = unescape(code)    // XOR "Decrypt"    result = '';    var key = 'X'.charCodeAt(0);    for (var i=0; i<code.length; i++) {        var letter = code.charCodeAt(i);        key ^= letter        result += String.fromCharCode(key);    }    return result}// Base64 Decode// Base64 code from Tyler Akins -- http://rumkin.comfunction decode64(input) {   var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";   var output = "";   var chr1, chr2, chr3;   var enc1, enc2, enc3, enc4;   var i = 0;   // Remove all characters that are not A-Z, a-z, 0-9, +, /, or =   input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");   do {      enc1 = keyStr.indexOf(input.charAt(i++));      enc2 = keyStr.indexOf(input.charAt(i++));      enc3 = keyStr.indexOf(input.charAt(i++));      enc4 = keyStr.indexOf(input.charAt(i++));      chr1 = (enc1 << 2) | (enc2 >> 4);      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);      chr3 = ((enc3 & 3) << 6) | enc4;      output = output + String.fromCharCode(chr1);      if (enc3 != 64) {         output = output + String.fromCharCode(chr2);      }      if (enc4 != 64) {         output = output + String.fromCharCode(chr3);      }   } while (i < input.length);   return output;}// Returns the corrected word or an empty stringfunction checkClozeWord(ele) {    var guess = ele.value;    // Extract the idevice id and the input number out of the element's id    var original = getClozeAnswer(ele);    var answer = original;    var guess = ele.value    var ident = getClozeIds(ele)[0]    // Read the flags for checking answers    var strictMarking = eval(document.getElementById(        'clozeFlag'+ident+'.strictMarking').value);    var checkCaps = eval(document.getElementById(        'clozeFlag'+ident+'.checkCaps').value);    if (!checkCaps) {        guess = guess.toLowerCase();        answer = original.toLowerCase();    }    if (guess == answer)        // You are right!        return original    else if (strictMarking || answer.length <= 4)        // You are wrong!        return "";    else {        // Now use the similarity check algorythm        var i = 0;        var j = 0;        var orders = [[answer, guess], [guess, answer]];        var maxMisses = Math.floor(answer.length / 6) + 1;        var misses = 0;        if (guess.length <= maxMisses) {            misses = Math.abs(guess.length - answer.length);            for (i = 0; i < guess.length; i++ ) {                if (answer.search(guess[i]) == -1) {                    misses += 1;                }            }            if (misses <= maxMisses) {                return answer;            } else {                return "";            }        }        // Iterate through the different orders of checking        for (i = 0; i < 2; i++) {            var string1 = orders[i][0];            var string2 = orders[i][1];            while (string1) {                misses = Math.floor(                            (Math.abs(string1.length - string2.length) +                             Math.abs(guess.length - answer.length)) / 2)                var max = Math.min(string1.length, string2.length)                for (j = 0; j < max; j++) {                    var a = string2[j];                    var b = string1[j];                    if (a != b)                        misses += 1;                    if (misses > maxMisses)                        break;                }                if (misses <= maxMisses)                    // You are right                    return answer;                string1 = string1.substr(1);            }        }        // You are wrong!        return "";    }}// Extracts the idevice id and input id from a javascript elementfunction getClozeIds(ele) {    // Extract the idevice id and the input number out of the element's id    // id is "clozeBlank%s.%s" % (idevice.id, input number)    var id = ele.id.slice(10);     var dotindex = id.indexOf('.')    var ident = id.slice(0, dotindex)    var inputId = id.slice(id.indexOf('.')+1)    return [ident, inputId]}// Calculate the score for cloze idevicefunction showClozeScore(ident, mark) {    var score = 0    var div = document.getElementById('cloze' + ident)    var inputs = getCloseInputs(ident)    for (var i=0; i<inputs.length; i++) {        var input = inputs[i];        if (mark) {            var result = checkAndMarkClozeWord(input);        } else {            var result = getClozeMark(input);        }        if (result == 2) {            score++;        }    }    // Show it in a nice paragraph    var scorePara = document.getElementById('clozeScore' + ident);    scorePara.innerHTML = "Your score is " + score + "/" + inputs.length + ".";}// Returns an array of input elements that are associated with a certain idevicefunction getCloseInputs(ident) {    var result = new Array;    var clozeDiv = document.getElementById('cloze'+ident)    recurseFindClozeInputs(clozeDiv, ident, result)    return result}// Adds any cloze inputs found to result, recurses downfunction recurseFindClozeInputs(dad, ident, result) {    for (var i=0; i<dad.childNodes.length; i++) {        var ele = dad.childNodes[i];        // See if it is a blank        if (ele.id) {            if (ele.id.search('clozeBlank'+ident) == 0) {                result.push(ele);                continue;            }        }        // See if it contains blanks        if (ele.hasChildNodes()) {            recurseFindClozeInputs(ele, ident, result);        }    }}    // Pass the cloze element's id, and the visible property of the feedback element// associated with it will be toggled. If there is no feedback field, does// nothingfunction toggleClozeFeedback(ident) {    var feedbackIdEle = document.getElementById(        'clozeVar'+ident+'.feedbackId');    if (feedbackIdEle) {        var feedbackId = feedbackIdEle.value;        toggleElementVisible(feedbackId);    }}// Toggle the visiblity of an element from it's idfunction toggleElementVisible(ident) {    // Toggle the visibility of an element    var element = document.getElementById(ident);    if (element) {        if (element.style.display != "none") {            element.style.display = "none";        } else {            element.style.display = "";        }    }}// Reflection Idevice code ////////////////////////////////////////////////// Show or hide the feedback for reflection idevicefunction showAnswer(id,isShow) {    if (isShow==1) {        document.getElementById("s"+id).style.display = "block";        document.getElementById("hide"+id).style.display = "block";        document.getElementById("view"+id).style.display = "none";    } else {        document.getElementById("s"+id).style.display = "none";        document.getElementById("hide"+id).style.display = "none";        document.getElementById("view"+id).style.display = "block";    }}//change forum or discussion topic or lms for discussion idevice.function submitChange(action, selectId) {    var form = document.getElementById("contentForm")          form.action.value = action    var select = document.getElementById(selectId)     form.object.value = select.value;    form.isChanged.value = 1;    form.submit();}// show or hide the feedback for cloze idevicefunction toggleFeedback(id) {    var ele = document.getElementById('fb'+id);    if (ele.style.display == "block") {        ele.style.display = "none";    } else {        ele.style.display = "block";    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -