【问题标题】:Chrome javascript console acts strange [closed]Chrome javascript控制台行为奇怪[关闭]
【发布时间】:2012-09-15 00:46:24
【问题描述】:

运行此代码交替在 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 版。


编辑: 示例:我刷新页面,控制台显示 &lt;div id="c"&gt;&lt;/div&gt; 。然后我再次刷新页面,控制台现在显示可扩展的HTMLDivElement 等等。

【问题讨论】:

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


    【解决方案1】:

    console.log 能够向您显示对象。 alert 显示字符串、数字、原始类型,你传递一个对象,alert 会说这是一个对象。因为对象的 tostring() 在您的情况下返回 [object HTMLDivElement]。

    【讨论】:

    • 确实如此,但问题是为什么 console.log() 交替显示不同的东西 - 我已经编辑了这个问题,所以它会更清楚。感谢您的回答!
    • 当我在 JS 中循环时,我在我的页面 [object HTMLDivElement] 上看到这个只是字面上的文本...我的循环正常附加,但这个“字符串”只是作为文本打印在顶部环形。在检查员中无法弄清楚它来自哪里。在 Firefox 中,它是 [object window],而不是 chrome 和 safari 中的 [object HTMLDivElement]
    【解决方案2】:

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

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

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

    【讨论】:

    • 对不起,我已经编辑了这个问题,让它更清楚
    【解决方案3】:

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

    【讨论】:

    • 对不起,我已经编辑了这个问题,让它更清楚
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    • 2023-03-12
    • 2018-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多