调试javascript和console.log无法正常工作

时间:2012-10-24 07:07:50

标签: javascript internet-explorer-9 firebug console.log

我不知道如何做到这一点,但我正在尝试使用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 64bit工作 感谢

2 个答案:

答案 0 :(得分: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);
     ...
   }

答案 1 :(得分: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 Explorers中,只有7个是没有JSON对象的本机支持的。但是你可以通过将json2.js库包含到你的页面来轻松解决这个问题 - 代码可以在GitHub存储库here中找到。