ฉันจะบันทึกองค์ประกอบ 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 ขององค์ประกอบฉันจะทำอย่างไร

คำตอบ:


165

ใช้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 () โดยตรงในคอนโซลมันใช้งานได้ แต่ถ้าฉันเขียนเป็นไฟล์. js จริงใน VS Code คอนโซล chrome dev จะบันทึกชื่อไฟล์ที่เขียนและหมายเลขบรรทัด เกิดขึ้นเพื่อทราบสาเหตุ?
Maiya

27

+1 ฉันมักจะใช้[[element]]เพื่อสร้างอาร์เรย์ดังนั้น Chrome จึงถูกบังคับให้แสดงเป็นวัตถุ ... ขอบคุณ!
pimvdb

คำตอบที่ดีตรงไปตรงมา โดยการเรียงลำดับ 'ที่เก่าแก่ที่สุด' มาในเส้นผมอีกอันหนึ่งดังนั้นการยอมรับ แต่ต้องขอบคุณมาก!
Ben Flynn

ไม่มีปัญหา. ฉันไม่สนใจว่าข้อใดเป็นที่ยอมรับ แต่คำตอบที่ได้รับการยอมรับควรเป็นคำตอบที่เป็นประโยชน์มากที่สุดสำหรับผู้อื่นในภายหลัง
รอส

2

เบราว์เซอร์พิมพ์เฉพาะส่วน html คุณสามารถใส่องค์ประกอบในวัตถุเพื่อดูโครงสร้างโดม

console.log({element})
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.