0

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;
}

function GetValueJson(key, scormVersion, methodCalled) {

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であると指摘しています。valueGetValueJson

もう 1 つの考慮事項: 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 を指定しSetValueJsonGetValueJsonSCORM 1.2 メソッドLMSSetValueおよびを使用しLMSGetValueていますが、SCORM 2004 CMI 要素cmi.locationおよびも含まれていますcmi.completion_status。SCORM 1.2 と SCORM 2004 の構文を混在させることはできないため、どちらか一方のみを使用するようにコードを修正する必要があります。

于 2012-10-08T16:43:30.353 に答える