Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript代码中获取console.log的结果字符串?_Javascript - Fatal编程技术网

如何在javascript代码中获取console.log的结果字符串?

如何在javascript代码中获取console.log的结果字符串?,javascript,Javascript,例如,如果我在chrome控制台中输入$(“p”),我会得到[Text1,。],这正是我想要的。现在我想将结果字符串存储到一个变量中并在以后重用它,但我还找不到方法($(“p”).toString()获取[Object]) 有没有办法在代码中获取console.log的结果字符串?您不能console.log发挥了字符串无法发挥的魔力。它不仅仅将对象渲染为字符串。它还使对象结构具有交互性和可点击性。它呈现多个交互元素。“开发人员”面板将引用一个对象,并在代码可以到达的范围之外对其进行渲染 但正如

例如,如果我在chrome控制台中输入
$(“p”)
,我会得到
[Text1

,。

]
,这正是我想要的。现在我想将结果字符串存储到一个变量中并在以后重用它,但我还找不到方法(
$(“p”).toString()
获取
[Object]


有没有办法在代码中获取console.log的结果字符串?

您不能
console.log
发挥了字符串无法发挥的魔力。它不仅仅将对象渲染为字符串。它还使对象结构具有交互性和可点击性。它呈现多个交互元素。“开发人员”面板将引用一个对象,并在代码可以到达的范围之外对其进行渲染

但正如@minitech所指出的,您可以使用
JSON.stringify(myObject)


尽管这不适用于DOM元素,因为它们通常具有循环引用。因此,您必须编写自己的函数来抓取jQuery对象并将其转储到字符串中。没有任何内置功能可以为您完成此任务。

好吧,这里有一些东西:

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);
}
功能报告(obj){
if(obj==null | | typeof obj===“string”| | typeof obj==“number”)返回字符串(obj);
if(obj.length)返回“[”+Array.prototype.map.call(obj,repr.join(“,”)+”];
if(obj instanceof HTMLElement)返回“”;
if(obj instanceof Text)返回'''+obj.nodeValue+'''';
if(obj.toString)返回obj.toString();
返回字符串(obj);
}
它既不互动也不全面。如果您需要,我可以添加它,但在某一点上,查看WebKit开发人员工具的源代码可能会更容易:)

您可以尝试

这是从
util
模块中提取节点的
inspect
实用程序,具有两个基本优点:

  • 单一聚焦模块
  • 与所有浏览器和环境兼容

尽管它与浏览器兼容,但它使用CommonJS,因此需要首先绑定。但是有一个fork可以通过直接加载到浏览器中。

为什么需要这个字符串?只是为了调试?
JSON.stringify
会接近吗?我想在我的博客中使用它:第一行是代码,第二行是按钮。单击按钮后,代码的控制台字符串出现在下面。因为jquery可能有很多操作,所以它比打开控制台,找到具体的行,返回页面并找到相应的操作要好。如果你在做JS开发,控制台应该是永久打开的,对吗?所以我想我不明白用例…你是对的。但我希望每个博客访问者都能看到结果,而且我不认为每个人都会打开控制台,在代码下附加结果更直观。@cameron是的,没有“标准”的方法将DOM元素数组简洁地呈现为字符串。每个浏览器可能都会有不同的表现。我明白了。谢谢。附言:我没有投票反对这个答案。其他人会。
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);
}