2

我不知道该怎么做,但我正在尝试使用 console.log 调试一些 JS 值:

 function SetAPIValue(key1, value1, scormVersion, methodCalled) {
/* key1 value sometimes contains the value true or false and dont want to store these! */
    if (key1 == true || key1 == false) { }
    else
    {
        /* value1 comes back with two values for cmi.suspend_data, then 3, then 4 all in one string seperated by a ';'! */
      setValuesArray.push({
       key: key1,
       value: value1
     });

   for (var i = setValuesArray.length - 1; i >= 0; i--) {
   var array = setValuesArray[i];
   console.log(setValuesArray);
   if (array.key == key1) {
     if (key1 = "cmi.suspend_data") {
       if (value1.indexOf(";") > 0)
       {
         valueArray[j] = value1.split(";");
         alert(valueArray[j]);
         //alert("key1 is" + key1 + "and is returning " + setValuesArray[j-1].value);
         return valueArray[j];
        }
       }
       else
         return setValuesArray[i].value;
       } 
    }
  }
  return "";
}

我正在尝试查看 console.log(setValuesArray) 中的内容。当我在 IE9 中运行我的应用程序时,我启用了 F12 开发人员工具,我单击控制台选项卡,我得到的只是:

日志:[对象对象] 日志:[对象对象],[对象对象] 日志:[对象对象],[对象对象] 日志:[对象对象],[对象对象],[对象对象]

我不明白?如何查看 setValuesArray 中的值?我没有安装 firebug-lite。我在win 7 64位工作 谢谢

4

2 回答 2

1

您正在尝试记录对象,这就是您获得这些输出的原因。尝试下面的日志或为您的对象使用 toString 方法。

   for (var i = setValuesArray.length - 1; i >= 0; i--) {
     var array = setValuesArray[i];
     console.log("key: "+setValuesArray[i].key+ " value: "+setValuesArray[i].value);
     ...
   }
于 2012-10-24T07:16:33.010 回答
1

我认为使用 console.log 是更好的方法(与使用警报相比)。

但是,请记住,console.log() 和 alert() 都将显示输入参数的字符串表示形式以及“[object Object]”的 JS 对象。

我可以推荐的是坚持使用console.log()的想法,但如果你希望能够在旧版浏览器中使用它(大多数情况下是IE的早期版本),你可能想看看这篇文章): http://patik.com/blog/complete-cross-browser-console-log/

此外,当您希望打印描述 JS 对象内容的字符串时,可以使用JSON.stringify()。因为,在 Internet Explorer 中,只有 7 个不具备对 JSON 对象的本机支持。但是您可以通过将 json2.js 库包含到您的页面来轻松解决这个问题 - 代码可在此处的 GitHub 存储库中找到。

于 2012-10-24T07:27:50.930 回答