getAttribute
ดึงแอตทริบิวต์ขององค์ประกอบ DOM ในขณะที่el.id
ดึงคุณสมบัติขององค์ประกอบ DOM นี้ พวกเขาไม่เหมือนกัน
โดยส่วนใหญ่คุณสมบัติ DOM จะซิงโครไนซ์กับแอตทริบิวต์
อย่างไรก็ตามการประสานไม่ได้รับประกันค่าเดียวกัน ตัวอย่างคลาสสิกอยู่ระหว่างel.href
และel.getAttribute('href')
สำหรับองค์ประกอบจุดยึด
ตัวอย่างเช่น:
<a href="/" id="hey"></a>
<script>
var a = document.getElementById('hey')
a.getAttribute('href')
a.href
</script>
ลักษณะการทำงานนี้เกิดขึ้นเนื่องจากตามW3Cคุณสมบัติ href ต้องเป็นลิงก์ที่มีรูปแบบดี เบราว์เซอร์ส่วนใหญ่เคารพมาตรฐานนี้ (เดาว่าไม่มีใคร)
มีกรณีอื่นเป็นinput
ของchecked
สถานที่ให้บริการ คุณสมบัติ DOM จะส่งกลับtrue
หรือfalse
ในขณะที่แอตทริบิวต์ส่งคืนสตริง"checked"
หรือสตริงว่าง
และจากนั้นก็มีคุณสมบัติบางอย่างที่ตรงกันทางเดียวเท่านั้น ตัวอย่างที่ดีที่สุดคือvalue
คุณสมบัติของinput
องค์ประกอบ การเปลี่ยนค่าผ่านคุณสมบัติ DOM จะไม่เปลี่ยนแอตทริบิวต์ (แก้ไข: ตรวจสอบความคิดเห็นแรกเพื่อความแม่นยำยิ่งขึ้น)
ด้วยเหตุผลเหล่านี้ฉันขอแนะนำให้คุณใช้คุณสมบัติ DOM ต่อไปไม่ใช่แอตทริบิวต์เนื่องจากพฤติกรรมของพวกเขาแตกต่างกันระหว่างเบราว์เซอร์
ในความเป็นจริงมีเพียงสองกรณีที่คุณต้องใช้แอตทริบิวต์:
- แอตทริบิวต์ HTML ที่กำหนดเองเนื่องจากไม่ได้ซิงค์กับคุณสมบัติ DOM
- ในการเข้าถึงแอตทริบิวต์ HTML ในตัวซึ่งไม่ได้ซิงค์จากคุณสมบัติและคุณแน่ใจว่าต้องการแอตทริบิวต์ (เช่นต้นฉบับ
value
ของinput
องค์ประกอบ)
หากคุณต้องการคำอธิบายโดยละเอียดฉันขอแนะนำให้คุณอ่านหน้านี้ คุณจะใช้เวลาไม่กี่นาทีเท่านั้น แต่คุณจะรู้สึกยินดีกับข้อมูล (ซึ่งฉันสรุปไว้ที่นี่)