How can I log an HTML element as a JavaScript object?

86,790

Solution 1

Use 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

If you’re inside the console already, you could simply type dir instead of console.dir:

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

To simply list the different property names (without the values), you could use Object.keys:

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

Even though there’s no public console.keys() method, if you’re inside the console already, you could just enter:

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

This won’t work outside the console window, though.

Solution 2

try this:

console.dir(element)

Reference
[Video] Paul Irish on becoming a console power user.

Solution 3

Browser print only html part, you can put the element in a object to see dome structure.

console.log({element})
Share:
86,790
Ben Flynn
Author by

Ben Flynn

"I mean, James, the Internet is a place where absolutely nothing happens. You need to take advantage of that." - Strong Bad

Updated on July 16, 2022

Comments

  • Ben Flynn
    Ben Flynn almost 2 years

    Using Google Chrome, if you console.log an object, it lets you inspect the element in the console. For example:

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

    This prints out Object which can be inspected by clicking on arrows next to it. If however I try to log an HTMLElement:

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

    This prints out <html></html> which can not be inspected by clicking on arrows next to it. If I want to see the JavaScript object (with its methods and fields) instead of just the DOM of the element, how would I do that?

  • pimvdb
    pimvdb over 12 years
    +1 I was always using [[element]] to create an array so that Chrome was forced to display it as an object... Thanks!
  • Ben Flynn
    Ben Flynn over 12 years
    Great straightforward answer. By 'oldest' sort came in a hair after the other one, hence the accept, but many thanks!
  • Ross
    Ross over 12 years
    No problems. I don't mind which is accepted, but accepted answer should be the one most helpful to others later.
  • Maiya
    Maiya almost 5 years
    When I use console.dir() directly in the console, it works. But if I write it in my actual .js file in VS Code, the chrome dev console just logs the name of the file that it was written in and the line number. Do happen to know why?