0

我在 new.js 中有获取和设置代码:

APIClass.prototype.LMSGetValue = function (element) {
   var value = GetValueJson(element, '1.2', 'LMSGetValue');  
   return value;
}

APIClass.prototype.LMSSetValue = function (element, value) {
  SetValueJson(element, value, '1.2', 'LMSSetValue');
  return "true";
}

API_1484_11_Class.prototype.GetValue = function (element) {
var value = GetValueJson(element, '2004 3rd Edition', 'GetValue');
  return value;
}

API_1484_11_Class.prototype.SetValue = function (element, value) {
   SetValueJson(element, value, '2004 3rd Edition', 'SetValue');
return "true";
}

function SetValueJson(key1, value1, scormVersion, methodCalled) {
  if (key1 = "cmi.suspend_data") {
    value1 = "none";
  }
    var obj = {
    key: key1,
    value: value1
  }
  setValuesArray.push(obj);

  for (var i = setValuesArray.length - 1; i >= 0; i--) {
  var array = setValuesArray[i];
  if (array.key === key1) {
    alert("returning value for key= " + setValuesArray[i].key + " with value as: " +  setValuesArray[i].value);
    return setValuesArray[i].value;
   }
  }
  //return value1;
}

函数GetValueJson(键,scormVersion,方法调用){

if (scormVersion == '1.2' && methodCalled == 'LMSGetValue')
{
 alert("key that must be set for 1.2: " + key);
}

if (scormVersion == '2004 3rd Edition' && methodCalled == 'GetValue') {
  alert("key that must be set 2004: " + key);
}

if (key = "cmi.completion_status") {
  value = "not completed"; 
}

if (key = "cmi.location") {
  value = "";
}

if (key = "cmi.suspend_data") {
  value = "";
}

 return value;
}

当我想设置一个值(SetValueJson)并且它与我在 GetValueJson 中获得的值不同时,会发生什么情况,我会弹出一个提示,指出无法存储持久数据。我怎样才能解决这个问题?一些模块使用 1.2 和其他 2004

谢谢

4

1 回答 1

0

关于您提供的示例代码的观察:

if (key1 = "cmi.suspend_data")if (key = "cmi.completion_status")在我看来像是错别字。你想在这里赋值吗?在条件语句中赋值通常被认为是一种不好的做法,我倾向于认为这些是错别字。

JSHint您的代码还指出setValuesArray未定义,并且value在您的GetValueJson函数中未定义。

另一个考虑因素:SCORM 的cmi.suspend_data空间非常有限,意外尝试存储超过允许数量的情况很常见。SCORM 1.2 提供 4096 个字节,而 SCORM 2004 提供 64,000 个字节。如果您在测试中使用 SCORM 1.2,我会检查以确保您的字符串不超过 4096 字节。

更新:

重新阅读您的代码后,我发现您的帖子已被标记,SCORM2004但您正在指定 SCORM 1.2 元素:

SetValueJson(element, value, '1.2', 'LMSSetValue');

function SetValueJson(key1, value1, scormVersion, methodCalled)

您的代码在 和 中指定了 SCORM 1.2 SetValueJsonGetValueJson并使用 SCORM 1.2 方法LMSSetValueLMSGetValue,但它还包含 SCORM 2004 CMI 元素cmi.locationcmi.completion_status。SCORM 1.2 和 SCORM 2004 语法不能混合使用,因此您需要更正代码以独占使用其中一种或另一种。

于 2012-10-08T16:43:30.353 回答