2011-10-27 84 views
33

我已经尝试使用console.log,以便可以看到包含多个对象的数组的内容。不过,我得到一个错误说的console.log不使用jQuery 1.6.2对象等Im和我的数组是这样的:console.log显示数组对象的内容

filters = {dvals:[{'brand':'1', 'count':'1'}, 
        {'brand':'2', 'count':'2'}, 
        {'brand':'3', 'count':'3'}]} 

console.log(filters); 

我想要做的就是写出来的数组的内容(什么过滤器)到过滤器格式的警告框(多数民众赞成我认为console.log做)。我怎么做?

+7

你使用什么浏览器? 'console'对象仅在某些浏览器或附加组件上可用 – Phil

+0

您使用的浏览器是什么? – chustar

+0

适用于我:http://jsfiddle.net/PxZjr/ –

回答

7

console.log不会产生任何消息框。我不认为它是在任何版本的IE浏览器(也不是Firefox)上没有添加萤火虫或一些等价物。

然而,它在Safari和Chrome中可用。既然你提到Chrome,我会用我的例子。

您需要打开窗口及其开发者窗口对应部分。您可以通过右键单击页面上的任何元素并选择“检查元素”来完成此操作。你的窗口将分为两部分,开发人员部分是底部。在两部分之间的区分是带按钮的栏,最右边的按钮标有“控制台”。您需要点击该按钮才能切换到控制台选项卡。不幸的是,我不知道如何通过键盘在铬上到达那里。 (在Mac OS X上的Safari浏览器,它的命令+ Shift + I)

一旦出现,您将可以通过该控制台中的JavaScript通过JavaScript加载顶端的任何页面,并且您将显示任何消息console.log

+0

您需要(安装并)激活IE Developer Tools调试器。只需转到网页进行调试,然后按F12按钮即可激活调试器。这定义了您在代码中使用的控制台。 – GuruM

+0

@GuruM:这不会只写出对象,不会像FireFox或Chrome中那样写对象的内容。 –

+0

@NeilKnight。提问者可以使用本页其他地方指定的技术来查看。我只是通知他如何激活IE调试器。 Kris没有提到如何让IE在IE中打开调试器,所以填补了空白。 – GuruM

1

看起来像Firebug或任何您正在使用的调试器,没有正确初始化。你确定Firebug在你试图访问console.log()方法时被完全初始化了吗?检查控制台标签(如果它被设置为激活)。

另一种可能性是,您可以自己在代码中的任何位置覆盖控制台对象。

+0

在IE8和谷歌浏览器中使用cosole.log我没有得到任何结果是它在我使用的浏览器中的一些设置。 – ONYX

+0

@KDM - console.log消息将显示在IE开发工具调试器中的“脚本”选项卡的“控制台”右侧窗口中。您需要访问要调试的网页,按F12键激活调试器。选择“开始调试”,然后选择“脚本”选项卡。运行脚本以查看“控制台”窗口中的日志消息。 – GuruM

1

Json代表JavaScript Object Notation确实所有json都是javascript对象,所以你的数组已经是json形式。写出来的一个div你可以做的我觉得这是一个最简单的一堆东西:

objectDiv.innerHTML = filter; 

其中objectDiv是你想要从DOM中使用jQuery选择的股利。如果要列举了阵列出来的部分,你可以访问它们,因为它是一个JavaScript对象,像这样:

objectDiv.innerHTML = filter.dvals.valueToDisplay; //brand or count depending. 

编辑:任何你想要的是一个字符串,但目前不是(这是罕见的JavaScript对待几乎一切都以字符串形式)只需使用内置的toString()函数。如上图所示,如果需要,可以使用filter.dvals.valueToDisplay.toString();

第二次编辑以澄清:此答案是对OP的评论的回应,并非完全针对他的原始问题。

4

console对象可在Internet Explorer 8中或更高版本,但只有当你按F12 通过菜单打开开发人员工具窗口。

即使再次关闭“开发人员工具”窗口直到关闭IE,它仍然可用。

Chorme和Opera始终有一个可用的console,至少在当前版本中。使用Firebug时,Firefox有一个console,但它也可能提供一个没有Firebug的。

在任何情况下,它都是使用console输出可选的保存方法。这里有一些如何做到这一点的例子:

if (console) { 
    console.log('Hello World!'); 
} 

if (console) console.debug('value of someVar: ' + someVar); 
41

有两种潜在的简单的解决方案来转储数组作为字符串。根据您所使用的环境:

...随着现代浏览器都使用JSON:

JSON.stringify(filters); 
// returns this 
"{"dvals":[{"brand":"1","count":"1"},{"brand":"2","count":"2"},{"brand":"3","count":"3"}]}" 

...的东西,如Node.js的,你可以使用console.info()

console.info(filters); 
// will output: 
{ dvals: 
[ { brand: '1', count: '1' }, 
    { brand: '2', count: '2' }, 
    { brand: '3', count: '3' } ] } 

编辑:

JSON.stringify带有两个可选参数。第三个“空间”参数使漂亮的印刷:

JSON.stringify(
       obj,  // the object to stringify 
       replacer, // a function or array transforming the result 
       spaces // prettyprint indentation spaces 
      ) 

例如:

JSON.stringify(filters, null, " "); 
// returns this 
"{ 
"dvals": [ 
    { 
    "brand": "1", 
    "count": "1" 
    }, 
    { 
    "brand": "2", 
    "count": "2" 
    }, 
    { 
    "brand": "3", 
    "count": "3" 
    } 
] 
}" 
+0

我建议有人在未来版本的Javascript中修复它,并使对象默认自动转换为合理的字符串表示。可能没有人想看到Object [Object]。 – osa

1

我热烈推荐这个片段,以确保,不小心留下的代码碎片不会对客户端的浏览器失败:

/* neutralize absence of firebug */ 
if ((typeof console) !== 'object' || (typeof console.info) !== 'function') { 
    window.console = {}; 
    window.console.info = window.console.log = window.console.warn = function(msg) {}; 
    window.console.trace = window.console.error = window.console.assert = function(msg) {}; 
} 

而不是定义一个空的函数,这个片段也是一个很好的起点,如果需要的话滚动自己的控制台代理,也就是将这些信息转储到.debug容器中,显示警报(可以获得很多)或者这样...

如果你确实使用firefox +萤火虫,console.dir()最适合倾倒数组输出,see here

1

在Javascript中将对象打印到控制台很简单。只需使用以下语法:

console.log(object); 

console.log('object: %O', object); 

我认为说这种记录语句只能在浏览器环境中是很重要的。我在Google Chrome中使用了这个功能。您可以在开发者控制台中查看console.log调用的输出:右键单击网页中的任何元素并选择“检查”以打开它。选择标签'控制台'。