HTML 요소를 JavaScript 객체로 기록하려면 어떻게해야합니까?


90

Google 크롬을 사용 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>옆에있는 화살표를 클릭하여 검사 할 수없는 것을 인쇄 합니다. 요소의 DOM 대신 JavaScript 객체 (메서드 및 필드 포함)를보고 싶다면 어떻게해야합니까?

답변:


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 파일에 작성하면 크롬 개발 콘솔은 작성된 파일의 이름과 줄 번호 만 기록합니다. 이유를 알고 있습니까?
Maiya

27

+1 저는 항상 [[element]]배열을 만드는 데 사용 했기 때문에 Chrome이 객체로 표시하도록했습니다. 감사합니다!
pimvdb 2012 년

아주 간단한 대답. '가장 오래된'종류에 따라 다른 사람의 머리카락이 나왔으므로 수락하지만 많은 감사합니다!
Ben Flynn 2012 년

아무 문제 없습니다. 어떤 것이 받아 들여 지는지 상관 없지만, 받아 들여진 대답은 나중에 다른 사람들에게 가장 도움이 될 것입니다.
로스

1

브라우저는 html 부분 만 인쇄하고, 요소를 개체에 넣어 돔 구조를 볼 수 있습니다.

console.log({element})
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.