Chrome javascript控制台行为很奇怪

时间:2012-09-14 16:16:47

标签: javascript jquery google-chrome google-chrome-devtools

在Chrome javascript控制台中,交替显示代码显示<div id="c"></div>可扩展 HTMLDivElement

$(function() {
    console.log( $("#c")[0] );
});

<div id="c"></div>

如果我运行alert()而不是console.log(),它总是返回[object HTMLDivElement]。

这并不会让我感到很烦恼,但如果输入不改变,这种输出不应该有点不变吗?那么Chrome控制台如何渲染对象或其他什么错误呢?

顺便说一下,我无法通过jsfiddle重现这个问题。 我的Chrome是版本21.0.1180.89和jQuery - 版本1.6.4。


编辑:示例:我刷新页面,控制台显示<div id="c"></div>。然后我再次刷新页面,控制台现在显示可扩展的HTMLDivElement,依此类推。

3 个答案:

答案 0 :(得分:3)

console.log能够向您显示该对象。 警报显示字符串,数字,基元类型,您传递一个对象,警报将说这是一个对象。因为对象的tostring()在你的情况下返回[object HTMLDivElement]。

答案 1 :(得分:1)

在Chrome控制台中,$已经是document.getElementById()的引用,因此请尝试使用jQuery代替$

jQuery(function() {
    console.log( jQuery("#c")[0] );
});

这应解决问题,提供统一的输出。正如其他人回答的那样,警报只是应用了toString()方法(因为警报函数期望输出一个字符串)。

答案 2 :(得分:0)

JavaScript警告向您显示对象的toString()结果,因为它无法显示字符串以外的任何内容。控制台能够为您提供对象的交互式表示。