Javascript SCORM 1.2:当cmi.core.LESSION_状态更新为失败时更改(铰接上升)

Javascript SCORM 1.2:当cmi.core.LESSION_状态更新为失败时更改(铰接上升),javascript,if-statement,scorm,scorm1.2,Javascript,If Statement,Scorm,Scorm1.2,希望有一个SCORM/Javascript专业人士可以帮助这个noob 我有一个SCORM文件,是用Articulate Rise编写的。最初,cmi.core.lesson_状态设置为“未完成”。最后是一个允许两次尝试的测验。第一次尝试失败后,lesson_状态更新为“失败”。除非你通过,否则它会一直这样 相反,如果第一次尝试失败,我希望它保持“不完整”。然后,在第二次尝试之后,我希望根据您的分数将其更新为“通过”或“失败” 下面是代码最初是如何编写的: var reporting = 'pa

希望有一个SCORM/Javascript专业人士可以帮助这个noob

我有一个SCORM文件,是用Articulate Rise编写的。最初,cmi.core.lesson_状态设置为“未完成”。最后是一个允许两次尝试的测验。第一次尝试失败后,lesson_状态更新为“失败”。除非你通过,否则它会一直这样

相反,如果第一次尝试失败,我希望它保持“不完整”。然后,在第二次尝试之后,我希望根据您的分数将其更新为“通过”或“失败”

下面是代码最初是如何编写的:

var reporting = 'passed-failed';

function completeOut(passed, reportParam) {
  var reportType = reportParam || reporting;

  if(passed) {
    switch(reportType) {
      case 'completed-incomplete':
      case 'completed-failed':
        LMSProxy.ResetStatus();
        LMSProxy.SetReachedEnd();
        break;

      case 'passed-incomplete':
      case 'passed-failed':
        LMSProxy.SetPassed();
        LMSProxy.SetReachedEnd();
        break;
    }
  } else {
    switch(reportType) {
      case 'passed-failed':
      case 'completed-failed':
        if(!isPassed()) {
          LMSProxy.SetFailed();
        }
        break;
    }
  }
}
看了之后,我试着用这个代码来修复它。请注意,data.retryAttempts在第一次尝试时为0,在第二次尝试时为1

function completeOut(passed, reportParam) {
  var reportType = reportParam || reporting;
  var attemptNumber = data.retryAttempts

  if(passed) {
    switch(reportType) {
      case 'completed-incomplete':
      case 'completed-failed':
        LMSProxy.ResetStatus();
        LMSProxy.SetReachedEnd();
        break;

      case 'passed-incomplete':
      case 'passed-failed':
        LMSProxy.SetPassed();
        LMSProxy.SetReachedEnd();
        break;
    }
  } else if(attemptNumber == 1) {
    switch(reportType) {
      case 'passed-failed':
      case 'completed-failed':
        if(!isPassed()) {
          LMSProxy.SetFailed();
        }
        break;
    }
  }
}
上面的代码不起作用

----编辑----
这里有一个指向SCORM包的链接:

我不确定您是否给了我们足够的信息,例如
reportParam
设置为什么?您正在检查
!isPassed()
在一个条件中,该条件已在检查
已通过的
是否为非真(因此没有必要)<在调用
SetPassed
SetFailed
后(无
ResetStatus
),不需要调用code>SetReachedEnd,因为在这种情况下它是一个no op。此外,我们需要知道在内容末尾调用了什么函数(如果有),例如
Finish
Suspend
,等等。谢谢Brian。(1) 我不知道reportParam设置为什么,甚至不知道在哪里可以找到它。不在单据或链接单据中;(2) “if!isPassed()”似乎是重复的;(3) 我认为SetReachedEnd的执行是为了,如果用户通过/完成了课程,但又重新获得了课程,那么LMS中的状态仍然是“通过/完成”(即,您不能从通过变为失败);(4) 在内容末尾或任何出口处调用Finish。如果我在帖子中添加一个指向完整SCORM包的链接会怎么样?3)
SetReachedEnd
将简单地将completion设置为completed,如果在此会话期间未设置成功状态(通过/失败),然后设置一个允许基于全局配置标志覆盖退出模式的标志。4) 调用1.2包的
Finish
将检查完成状态,如果没有
SetPassed
/
SetFailed
调用,将触发将完成状态设置为completed。这可能就是您在案例中看到已完成的原因。JS错误表明,
data.retryAttempts
是无效代码(数据是
undefined
),因此
attemptNumber
不可能等于
1
,因此将永远不会输入条件的第二部分。您需要确定什么是
数据
,或者如何访问
重试次数