【问题标题】:SCORM 2004 Get and Set ValuesSCORM 2004 获取和设置值
【发布时间】:2015-06-02 17:00:48
【问题描述】:

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

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的日志。我认为这可能与为目标提供 ID 有关。

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

如果您认为/猜测/知道问题完全不同,我们将不胜感激。

【问题讨论】:

  • 与指定 ID 无关。 SCORM 日志错误表示目标不存在。通过 _count 验证目标是否存在,如下面的 Mark 所述。
  • i.toString() 是多余的 - 只需直接使用 i,因为 javascript 本身会将其更改为字符串。
  • @Rycochet 实际上它是 AS,它不喜欢那里的整数。但是我不知道JS可以自动投射。
  • 自动转换可能很有用 - 例如对数字字符串进行数学运算 - 但我只相信自动转换为字符串 ;-)

标签: javascript scorm scorm2004


【解决方案1】:

所以通常你可以检查 - scorm.GetValue('cmi.objectives._count') 以了解您是否有要投票的目标。

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

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

希望对您有所帮助。

【讨论】:

  • 感谢您的回答。计数返回为 0,因此没有目标。更好地检查 completion_status 和所有循环。
  • 太好了,所以我有一个“getObjectiveByID”类型的查找,所以如果您要恢复 SCO 并需要查找目标的数组值,它可以返回对象。该代码在github.com/cybercussion/SCOBot/blob/master/QUnit-Tests/js/scorm/… 上都是开源的
  • 哇,这肯定行得通。我实际上已经解决了我的问题,但以后一定要试一试。再次感谢。
【解决方案2】:

在设置(或获取)其他值之前需要先设置 id - 请参阅SCORM Conformance Requirements 中的 REQ_72.4.2.6(大约第 50 页)。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多