📄 jquiz6.js_
字号:
function CheckMCAnswer(QNum, ANum, Btn){//if question doesn't exist, bail if (State[QNum].length < 1){return;}//Get the feedback Feedback = I[QNum][3][ANum][1];//Now show feedback and bail if question already complete if (State[QNum][0] > -1){//Add an extra message explaining that the question// is finished if defined by the user if (strQuestionFinished.length > 0){Feedback += '<br />' + strQuestionFinished;}//Show the feedback ShowMessage(Feedback); return; }//Hide the button while processing Btn.style.display = 'none';//Increment the number of tries State[QNum][2]++;//Add the percent-correct value of this answer State[QNum][3] += I[QNum][3][ANum][3];//Store the try number in the answer part of the State array, for tracking purposes State[QNum][1][ANum] = State[QNum][2]; if (State[QNum][5].length > 0){State[QNum][5] += ' | ';} State[QNum][5] += String.fromCharCode(65+ANum);//Should this answer be accepted as correct? if (I[QNum][3][ANum][2] < 1){//It's wrong//Mark the answer Btn.innerHTML = IncorrectIndicator;//Remove any previous score unless exercise is finished (6.0.3.8+) if (Finished == false){ WriteToInstructions(strInstructions); }//Check whether this leaves just one MC answer unselected, in which case the Q is terminated var RemainingAnswer = FinalAnswer(QNum); if (RemainingAnswer > -1){//Behave as if the last answer had been selected, but give no credit for it//Increment the number of tries State[QNum][2]++;//Calculate the score for this question CalculateMCQuestionScore(QNum);//Get the overall score and add it to the feedback CalculateOverallScore(); if ((ContinuousScoring == true)||(Finished == true)){ Feedback += '<br />' + YourScoreIs + ' ' + Score + '%.'; WriteToInstructions(YourScoreIs + ' ' + Score + '%.'); } } } else{//It's right//Mark the answer Btn.innerHTML = CorrectIndicator;//Calculate the score for this question CalculateMCQuestionScore(QNum);//Get the overall score and add it to the feedback if (ContinuousScoring == true){ CalculateOverallScore(); if ((ContinuousScoring == true)||(Finished == true)){ Feedback += '<br />' + YourScoreIs + ' ' + Score + '%.'; WriteToInstructions(YourScoreIs + ' ' + Score + '%.'); } } }//Show the button again Btn.style.display = 'inline';//Finally, show the feedback ShowMessage(Feedback);//Check whether all questions are now done CheckFinished();}function CalculateMCQuestionScore(QNum){ var Tries = State[QNum][2] + State[QNum][4]; //include tries and hint penalties var PercentCorrect = State[QNum][3]; var TotAns = GetTotalMCAnswers(QNum); var HintPenalties = State[QNum][4];//Make sure it's not already complete if (State[QNum][0] < 0){//Allow for Hybrids if (HintPenalties >= 1){ State[QNum][0] = 0; } else{//This line calculates the score for this question if (TotAns == 1){ State[QNum][0] = 1; } else{ State[QNum][0] = ((TotAns-((Tries*100)/State[QNum][3]))/(TotAns-1)); } }//Fix for Safari bug added for version 6.0.3.42 (negative infinity problem) if ((State[QNum][0] < 0)||(State[QNum][0] == Number.NEGATIVE_INFINITY)){ State[QNum][0] = 0; } }}function GetTotalMCAnswers(QNum){ var Result = 0; for (var ANum=0; ANum<I[QNum][3].length; ANum++){ if (I[QNum][3][ANum][4] == 1){ //This is an MC answer Result++; } } return Result;}function FinalAnswer(QNum){ var UnchosenAnswers = 0; var FinalAnswer = -1; for (var ANum=0; ANum<I[QNum][3].length; ANum++){ if (I[QNum][3][ANum][4] == 1){ //This is an MC answer if (State[QNum][1][ANum] < 1){ //This answer hasn't been chosen yet UnchosenAnswers++; FinalAnswer = ANum; } } } if (UnchosenAnswers == 1){ return FinalAnswer; } else{ return -1; }}[/inclMultiChoice][inclMultiSelect]function CheckMultiSelAnswer(QNum){//bail if question doesn't exist or exercise finished if ((State[QNum].length < 1)||(Finished == true)){return;}//Increment the tries for this question State[QNum][2]++; var ShouldBeChecked; var Matches = 0; if (State[QNum][5].length > 0){State[QNum][5] += ' | ';}//Check if there are any mismatches Feedback = ''; var CheckBox = null; for (var ANum=0; ANum<I[QNum][3].length; ANum++){ CheckBox = document.getElementById('Q_' + QNum + '_' + ANum + '_Chk'); if (CheckBox.checked == true){ State[QNum][5] += 'Y'; } else{ State[QNum][5] += 'N'; } ShouldBeChecked = (I[QNum][3][ANum][2] == 1); if (ShouldBeChecked == CheckBox.checked){ Matches++; } else{ Feedback = I[QNum][3][ANum][1]; } }//Add the hit readout Feedback = Matches + ' / ' + I[QNum][3].length + '<br />' + Feedback; if (Matches == I[QNum][3].length){//It's right CalculateMultiSelQuestionScore(QNum); if (ContinuousScoring == true){ CalculateOverallScore(); if ((ContinuousScoring == true)||(Finished == true)){ Feedback += '<br />' + YourScoreIs + ' ' + Score + '%.'; WriteToInstructions(YourScoreIs + ' ' + Score + '%.'); } } } else{//It's wrong -- Remove any previous score unless exercise is finished (6.0.3.8+) if (Finished == false){ WriteToInstructions(strInstructions); } }//Show the feedback ShowMessage(Feedback);//Check whether all questions are now done CheckFinished();}function CalculateMultiSelQuestionScore(QNum){ var Tries = State[QNum][2]; var TotAns = State[QNum][1].length;//Make sure it's not already complete if (State[QNum][0] < 0){ State[QNum][0] = (TotAns - (Tries-1)) / TotAns; if (State[QNum][0] < 0){ State[QNum][0] = 0; } }}[/inclMultiSelect]function CalculateOverallScore(){ var TotalWeighting = 0; var TotalScore = 0; for (var QNum=0; QNum<State.length; QNum++){ if (State[QNum] != null){ if (State[QNum][0] > -1){ TotalWeighting += I[QNum][0]; TotalScore += (I[QNum][0] * State[QNum][0]); } } } if (TotalWeighting > 0){ Score = Math.floor((TotalScore/TotalWeighting)*100); } else{//if TotalWeighting is 0, no questions so far have any value, so//no penalty should be shown. Score = 100; }}function CheckFinished(){ var FB = ''; var AllDone = true; for (var QNum=0; QNum<State.length; QNum++){ if (State[QNum] != null){ if (State[QNum][0] < 0){ AllDone = false; } } } if (AllDone == true){//Report final score and submit if necessary CalculateOverallScore(); FB = YourScoreIs + ' ' + Score + '%.'; if (ShowCorrectFirstTime == true){ var CFT = 0; for (QNum=0; QNum<State.length; QNum++){ if (State[QNum] != null){ if (State[QNum][0] >= 1){ CFT++; } } } FB += '<br />' + CorrectFirstTime + ' ' + CFT + '/' + QsToShow; } WriteToInstructions(FB); Finished == true;[inclTimer] window.clearInterval(Interval);[/inclTimer][inclScorm1.2] if (TimeOver == true){ SetScormTimedOut(); } else{ SetScormComplete(); }[/inclScorm1.2] TimeOver = true; Locked = true;[inclSendResults] setTimeout('SendResults(' + Score + ')', 50);[/inclSendResults] Finished = true; Detail = '<?xml version="1.0"?><hpnetresult><fields>'; for (QNum=0; QNum<State.length; QNum++){ if (State[QNum] != null){ if (State[QNum][5].length > 0){ Detail += '<field><fieldname>Question #' + (QNum+1) + '</fieldname><fieldtype>question-tracking</fieldtype><fieldlabel>Q ' + (QNum+1) + '</fieldlabel><fieldlabelid>QuestionTrackingField</fieldlabelid><fielddata>' + State[QNum][5] + '</fielddata></field>'; } } } Detail += '</fields></hpnetresult>'; setTimeout('Finish()', SubmissionTimeout); }[inclScorm1.2] else{ SetScormIncomplete(); }[/inclScorm1.2]}[inclTimer]function TimesUp(){ document.getElementById('Timer').innerHTML = '[strTimesUp]';[inclPreloadImages] RefreshImages();[/inclPreloadImages] TimeOver = true; Finished = true; ShowMessage('[strTimesUp]');//Set all remaining scores to 0 for (var QNum=0; QNum<State.length; QNum++){ if (State[QNum] != null){ if (State[QNum][0] < 0){ State[QNum][0] = 0; } } } CheckFinished();}[/inclTimer]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -