Javascript API包装的LMSSetValue不是从LMSGetValue获得的设置值,它们不同吗?

Javascript API包装的LMSSetValue不是从LMSGetValue获得的设置值,它们不同吗?,javascript,scorm,scorm2004,Javascript,Scorm,Scorm2004,我在new.js中有get和set代码: APIClass.prototype.LMSGetValue = function (element) { var value = GetValueJson(element, '1.2', 'LMSGetValue'); return value; } APIClass.prototype.LMSSetValue = function (element, value) { SetValueJson(element, value, '

我在new.js中有get和set代码:

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(key,scormVersion,methodCalled){

当我想要设置一个值(SetValueJson)时,它与我在GetValueJson中得到的值不同,我会得到一个弹出窗口,说明无法存储持久数据。我如何解决这个问题?一些模块使用1.2,其他模块使用2004


感谢对您提供的示例代码的观察:

if(key=“cmi.suspend\u data”)
if(key=“cmi.completion\u status”)
在我看来像是打字错误。您是否试图在这里赋值?通常认为在条件语句中赋值是一种不好的做法,我倾向于认为这些都是打字错误

对代码进行加密还指出
setValuesArray
未定义,
value
GetValueJson
函数中未定义

另一个考虑事项:SCORM的
cmi.suspend_data
空间非常有限,经常会意外尝试并存储超过允许数量的数据。SCORM 1.2提供4096字节,而SCORM 2004提供64000字节。如果在测试中使用SCORM 1.2,我会检查以确保字符串不超过4096字节

更新:

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

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

function SetValueJson(key1, value1, scormVersion, methodCalled)

您的代码在
SetValueJson
GetValueJson
中指定了SCORM 1.2,并使用了SCORM 1.2方法
LMSSetValue
LMSGetValue
,但它还包含SCORM 2004 CMI元素
CMI.location
CMI.completion\u status
。SCORM 1.2和SCORM 2004语法不能混合,因此您需要将您的代码更正为仅使用其中一个。

是的,谢谢,我意识到并修复了它,但仍然不确定它要如何设置一个与我刚得到的值不同的值?
SetValueJson(element, value, '1.2', 'LMSSetValue');

function SetValueJson(key1, value1, scormVersion, methodCalled)