如何将HTML元素记录为JavaScript对象?


90

使用Google Chrome浏览器,如果您console.log是对象,则可以检查控制台中的元素。例如:

var a = { "foo" : "bar", "whiz" : "bang" };
console.log(a);

打印出来Object,可以通过单击旁边的箭头进行检查。但是,如果我尝试记录HTMLElement:

var b = goog.dom.query('html')[0];
console.log(b);

这会打印出来<html></html>,无法通过单击旁边的箭头进行检查。如果我要查看JavaScript对象(及其方法和字段),而不仅仅是元素的DOM,我该怎么做?

Answers:


164

用途console.dir

var element = document.documentElement; // or any other element
console.log(element); // logs the expandable <html>…</html>
console.dir(element); // logs the element’s properties and values

如果您已经在控制台内,则只需输入dir而不是即可console.dir

dir(element); // logs the element’s properties and values

要简单地列出不同的属性名称(不包含值),可以使用Object.keys

Object.keys(element); // logs the element’s property names

即使没有公共console.keys()方法,如果您已经在控制台中,也可以输入:

keys(element); // logs the element’s property names

但是,这将无法在控制台窗口之外运行。


当我直接在控制台中使用console.dir()时,它可以工作。但是,如果我在VS Code中将其写入实际的.js文件中,则chrome dev控制台只会记录写入该文件的文件名和行号。碰巧知道为什么吗?
Maiya

27

试试这个:

console.dir(element)

参考
[视频] Paul Irish成为控制台高级用户。


+1我一直[[element]]在用来创建数组,因此Chrome被迫将其显示为对象...谢谢!
pimvdb 2012年

简单明了的答案。按照“最古老的”排序出现在另一个之后,因此接受了,但是非常感谢!
本·弗林

没问题。我不介意哪个被接受,但是被接受的答案应该是以后对其他人最有帮助的答案。
罗斯

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.