SCORM 2004 获取和设置值

SCORM 2004 Get and Set Values

我正在尝试获取和设置各种 objective 的完成状态。我正在尝试做这些;

str = scorm.GetValue("cmi.objectives." + i.toString() + ".completion_status");

GetValue('cmi.objectives.0.completion_status') returned '' in 0 seconds
[13:50:23.469] Checking for GetValue Error
[13:50:23.469] SCORM ERROR FOUND - Set Error State: 301 - 
The Objectives collection does not have an element at index 0, the current element count is 0.

这是SCORM Cloud的日志。我认为这可能与为 objectives.

提供 ID 有关

我的 objective 没有在清单中设置 ID,我不知道我必须这样做。所以问题是我是否需要为每个 objective(清单或 javascript)提供一个 ID?

如果您think/guess/know问题完全不同,我们将不胜感激。

所以通常你可以检查 - scorm.GetValue('cmi.objectives._count') 了解您是否有任何 objective 要轮询。

如果它返回 2,那么您将有两个 objective 循环查找您需要更新的 cmi.objective.x.id。或者,如果您添加一个新的 objective,那么 _count 将为您提供压缩数组中的下一个可用索引。

如果您的 _count 为 1,则值得尝试检查 completion_status 等...否则您将生成与您描述的一样的 SCORM 错误。

希望对您有所帮助。

要求在设置(或获取)其他值之前先设置 ID - 请参阅 SCORM Conformance Requirements(第 50 页左右)中的 REQ_72.4.2.6。

在 javascript 内设置 id 是完全可以的,所以你可以很容易地使用 "objective_1" 作为第一个等等(尽管为了更多的未来证据,它应该是某种形式的 URN -即使那是 "urn:x-local:objective_1").