7

たとえば$("p")、Chrome コンソールに入力すると、 が表示されます[<p>Text1</p>,<p>..</p>]。これはまさに私が求めているものです。結果の文字列を変数に格納して後で再利用したいのですが、まだ方法が見つかりませんでした ( $("p").toString()gets [Object Object])。

console.logコード内の結果文字列を取得する方法はありますか?

4

3 に答える 3

3

さて、ここに何かっぽいものがあります:

function repr(obj) {
    if(obj == null || typeof obj === 'string' || typeof obj === 'number') return String(obj);
    if(obj.length) return '[' + Array.prototype.map.call(obj, repr).join(', ') + ']';
    if(obj instanceof HTMLElement) return '<' + obj.nodeName.toLowerCase() + '>';
    if(obj instanceof Text) return '"' + obj.nodeValue + '"';
    if(obj.toString) return obj.toString();

    return String(obj);
}

インタラクティブでも包括的でもありません。必要な場合は追加できますが、ある時点で、WebKit 開発者ツールのソースを見る方が簡単かもしれません :)

于 2013-07-28T18:39:57.497 に答える
1

できません。console.log文字列にはできないいくつかの魔法を行います。オブジェクトを文字列としてレンダリングするだけではありません。また、オブジェクト構造をインタラクティブでクリック可能にします。複数のインタラクティブな要素をレンダリングしています。開発パネルは、オブジェクトへの参照を取得し、コードが到達できる場所の外にレンダリングしています。

しかし、@minitech が指摘しているように、 に近づくことができますJSON.stringify(myObject)

var myObject = { a: 1, b: 2 };
myObject.toString();      // [object Object]
JSON.stringify(myObject); // {"a":1,"b":2}

ただし、DOM 要素には通常循環参照があるため、これは機能しません。したがって、jQuery オブジェクトをクロールして文字列にダンプするには、独自の関数を作成する必要があります。あなたのためにそれを行うために組み込まれているものは何もありません。

于 2013-07-28T04:47:17.050 に答える
0

util-inspectを試すことができます

これは、モジュールからNode のinspectユーティリティを抽出したものであり、次の 2 つの基本的な利点があります。util

  • 単一の焦点を絞ったモジュール
  • すべてのブラウザと環境に対応。

ブラウザとの互換性はありますが、CommonJS を使用しているため、最初にバンドルする必要があります。ただし、 UNPKGを介してブラウザーに直接ロードできるフォークがあります。

于 2020-03-30T11:05:53.147 に答える