0

このコードを交互に実行すると、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などが表示されます。

4

3 に答える 3

3

console.log には、オブジェクトを表示する機能があります。alert は文字列、数値、プリミティブ型を表示します。オブジェクトを渡すと、alert はそれがオブジェクトであると言います。オブジェクトの tostring() が [object HTMLDivElement] を返すためです。

于 2012-09-14T16:20:48.733 に答える
1

Chrome コンソールでは、$は既に の参照になっているため、代わりにdocument.getElementById()使用してみてくださいjQuery$

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

これで問題が解決し、均一な出力が得られます。他の人が答えたように、アラートは toString() メソッドを適用するだけです (アラート関数は文字列を出力することを期待しているため)。

于 2012-09-14T16:19:27.320 に答える
0

JavaScriptアラートは、文字列以外のものを表示できないため、オブジェクトのtoString()結果を表示しています。コンソールは、オブジェクトのインタラクティブな表現を提供することができます。

于 2012-09-14T16:25:05.873 に答える