Javascript SCORM 1.2:当cmi.core.LESSION_状态更新为失败时更改(铰接上升)
希望有一个SCORM/Javascript专业人士可以帮助这个noob 我有一个SCORM文件,是用Articulate Rise编写的。最初,cmi.core.lesson_状态设置为“未完成”。最后是一个允许两次尝试的测验。第一次尝试失败后,lesson_状态更新为“失败”。除非你通过,否则它会一直这样 相反,如果第一次尝试失败,我希望它保持“不完整”。然后,在第二次尝试之后,我希望根据您的分数将其更新为“通过”或“失败” 下面是代码最初是如何编写的: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
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
,因此将永远不会输入条件的第二部分。您需要确定什么是数据
,或者如何访问重试次数
。