ฉันต้องการวิธีกำหนดประเภทขององค์ประกอบ HTML ใน JavaScript มันมี ID แต่องค์ประกอบเองอาจเป็น a <div>
, <form>
field, a <fieldset>
, ฯลฯ ฉันจะทำสิ่งนี้ได้อย่างไร
ฉันต้องการวิธีกำหนดประเภทขององค์ประกอบ HTML ใน JavaScript มันมี ID แต่องค์ประกอบเองอาจเป็น a <div>
, <form>
field, a <fieldset>
, ฯลฯ ฉันจะทำสิ่งนี้ได้อย่างไร
คำตอบ:
nodeName
เป็นแอตทริบิวต์ที่คุณกำลังมองหา ตัวอย่างเช่น:
var elt = document.getElementById('foo');
console.log(elt.nodeName);
โปรดทราบว่าnodeName
ส่งคืนชื่อองค์ประกอบที่เป็นตัวพิมพ์ใหญ่และไม่มีวงเล็บเหลี่ยมซึ่งหมายความว่าหากคุณต้องการตรวจสอบว่าองค์ประกอบเป็น<div>
องค์ประกอบคุณสามารถทำได้ดังนี้:
elt.nodeName == "DIV"
ในขณะนี้จะไม่ให้ผลลัพธ์ที่คุณคาดหวัง:
elt.nodeName == "<div>"
if (elt.nodeName && elt.nodeName.toLowerCase() === 'div') { ... }
localName
ไงล่ะ
เกี่ยวกับelement.tagName
อะไร
ดูเพิ่มเติมtagName
เอกสารบน MDN
บางครั้งคุณต้องการ element.constructor.name
document.createElement('div').constructor.name
// HTMLDivElement
document.createElement('a').constructor.name
// HTMLAnchorElement
document.createElement('foo').constructor.name
// HTMLUnknownElement
คุณสามารถใช้การตรวจสอบรหัสทั่วไปผ่านทางinstanceof
:
var e = document.getElementById('#my-element');
if (e instanceof HTMLInputElement) {} // <input>
elseif (e instanceof HTMLSelectElement) {} // <select>
elseif (e instanceof HTMLTextAreaElement) {} // <textarea>
elseif ( ... ) {} // any interface
ดูที่นี่สำหรับรายการอินเตอร์เฟสทั้งหมด