例如,如果我在chrome控制台中输入$("p")
,我会得到[<p>Text1</p>,<p>..</p>]
,这正是我想要的。现在我想将结果字符串存储到变量中并稍后重用,但我找不到方法($("p").toString()
得到[Object Object]
)。
有没有办法在代码中获取console.log
的结果字符串?
答案 0 :(得分: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对象并将其转储到字符串中。没有内置任何东西可以帮助你。
答案 1 :(得分:1)
嗯,这是什么 - ish:
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开发人员工具的来源:)
答案 2 :(得分:0)
您可以尝试util-inspect
这是从
inspect
模块中提取的Nodeutil
实用程序,具有两个基本优点:
- 单个重点模块
- 与所有浏览器和环境兼容。
尽管它与浏览器兼容,但它使用CommonJS,因此需要首先进行捆绑。但是有一个分支,您可以通过UNPKG直接在浏览器中加载。