首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SCORM1.2测试成绩的Javascript计算

SCORM1.2测试成绩的Javascript计算
EN

Stack Overflow用户
提问于 2012-08-10 10:13:10
回答 1查看 1.2K关注 0票数 0

我有一个SCORM1.2内容包,其中有一些HTML页面包含问答。单击submit按钮后,javascript计算分数并返回。我当前的java脚本可以处理两个问题,如果一个页面中有更多的问题,那么我必须通过包含一个新变量来修改javascript。我想知道是否有任何通用的方法来为'n‘问题编写相同的javascript;它可以计算分数,而不考虑问题数量的变化。谢谢你。

我的Java脚本:(calculate.js)

代码语言:javascript
复制
<script type="text/javascript">
<![CDATA[
var numQuestions = 2;
var rawScore = 0;
var actualScore = 0;
var question0;
var question1;
var key0 = 0;
var key1 = 1;
function getAnswer()
        {
            doLMSSetValue("cmi.interactions.0.id","key0b8");
            doLMSSetValue("cmi.interactions.0.type","choice");
            doLMSSetValue("cmi.interactions.0.correct_responses.0.pattern",
                          "0");

            for (var i=0; i < 2; i++)
            {
               if (document.getElementById("quizForm8").key0b8[i].checked)
               {
                  question0 = document.getElementById("quizForm8").key0b8[i].value;
                  doLMSSetValue("cmi.interactions.0.student_response",question0);
                  break;
               }
            }

            doLMSSetValue("cmi.interactions.1.id","key1b8");
            doLMSSetValue("cmi.interactions.1.type","choice");
            doLMSSetValue("cmi.interactions.1.correct_responses.0.pattern",
                          "1");

            for (var i=0; i < 2; i++)
            {
               if (document.getElementById("quizForm8").key1b8[i].checked)
               {
                  question1 = document.getElementById("quizForm8").key1b8[i].value;
                  doLMSSetValue("cmi.interactions.1.student_response",question1);
                  break;
               }
            }

           }
        function calcRawScore(){

            if (question0 == key0)
            {
               doLMSSetValue("cmi.interactions.0.result","correct");
               rawScore++;
            }
            else
            {
               doLMSSetValue("cmi.interactions.0.result","wrong");
            }
            if (question1 == key1)
            {
               doLMSSetValue("cmi.interactions.1.result","correct");
               rawScore++;
            }
            else
            {
               doLMSSetValue("cmi.interactions.1.result","wrong");
            }
        }

        function calcScore2()
        {
           computeTime();  // the student has stopped here.

           document.getElementById("quizForm8").submitB.disabled = true;

           getAnswer();

           calcRawScore();

           actualScore = Math.round(rawScore / numQuestions * 100);
        alert("Your score is " + actualScore + "%")   

           doLMSSetValue( "cmi.core.score.raw", actualScore+"" );

           var mode = doLMSGetValue( "cmi.core.lesson_mode" );

               if ( mode != "review"  &&  mode != "browse" ){
                 if ( actualScore < 50 )
                 {
                   doLMSSetValue( "cmi.core.lesson_status", "failed" );
                 }
                 else 
                 {
                   doLMSSetValue( "cmi.core.lesson_status", "passed" );
                 }

                 doLMSSetValue( "cmi.core.exit", "" );
                 } 

         exitPageStatus = true;


         doLMSCommit();

         doLMSFinish();

        }
]]>
</script>

(X)HTML:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
 <!-- Other Code -->
      <body>
        <div id="outer">
          <div class="QuizTestIdevice" id="id8">
            <script src="calculate.js" type="text/javascript"></script>
            <form name="quizForm8" id="quizForm8" action="javascript:calcScore2();">
              <div class="iDevice_inner">
                <div class="passrate" value="50"></div>
                <div class="question">
                  <div id="taquestion0b8">
                    1&gt; TEXT FOR QUESTION 1.
                  </div><br />
                  True<input type="radio" name="key0b8" value="0" id="taoptionAnswer0q0b8" /> 
                  False<input type="radio" name="key0b8" value="1" id="taoptionAnswer1q0b8" />
                </div><br />
                <div class="question">
                  <div id="taquestion1b8">
                    2&gt; TEXT FOR QUESTION 2.
                  </div><br />
                  True<input type="radio" name="key1b8" value="0" id="taoptionAnswer0q1b8" /> 
                  False<input type="radio" name="key1b8" value="1" id="taoptionAnswer1q1b8" />
                </div><br />
                <input type="submit" name="submitB" value="SUBMIT ANSWERS" />
              </div>
            </form>
          </div>
        </div>
      </body>
    </html>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-08 09:12:02

您可以在函数调用时传递问题计数值。

代码语言:javascript
复制
<form name="quizForm8" id="quizForm8" action="javascript:calcScore2();">

代码语言:javascript
复制
<form name="quizForm8" id="quizForm8" action="javascript:calcScore2(5);"> //5 -> Argument for 5 questions

-

代码语言:javascript
复制
function calcScore2(n)
{ 
    numQuestions = n;
.
.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11899564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档