this.id (เท่าที่คุณรู้)
this.value(สำหรับประเภทอินพุตส่วนใหญ่ปัญหาที่ฉันรู้เท่านั้นคือ IE เมื่อ<select>ไม่มีvalueคุณสมบัติที่กำหนดไว้ใน<option>องค์ประกอบหรืออินพุตวิทยุใน Safari)
this.className เพื่อรับหรือตั้งค่าคุณสมบัติ "คลาส" ทั้งหมด
this.selectedIndexเทียบกับ a <select>เพื่อรับดัชนีที่เลือก
this.optionsกับ a <select>เพื่อรับรายการ<option>องค์ประกอบ
this.textต่อต้าน<option>เพื่อให้ได้เนื้อหาข้อความ
this.rowsต่อ a <table>เพื่อรับชุดของ<tr>องค์ประกอบ
this.cellsกับ a <tr>เพื่อให้ได้เซลล์ (td & th)
this.parentNode เพื่อรับพาเรนต์โดยตรง
this.checkedเพื่อรับสถานะที่ถูกตรวจสอบของcheckbox Thanks @Tim Down
this.selectedเพื่อรับสถานะที่เลือกของoption Thanks @Tim Down
this.disabledเพื่อรับสถานะที่ถูกปิดใช้งานของinput Thanks @Tim Down
this.readOnlyเพื่อรับสถานะ readOnly ของinput Thanks @Tim Down
this.hrefกับ<a>องค์ประกอบที่จะได้รับมันhref
this.hostnameกับ<a>องค์ประกอบที่จะได้รับโดเมนของมันhref
this.pathnameกับ<a>องค์ประกอบที่จะได้รับเส้นทางของมันhref
this.searchกับ<a>องค์ประกอบที่จะได้รับการสอบถามของมันhref
this.src กับองค์ประกอบที่ถูกต้องที่จะมี src
... ฉันคิดว่าคุณเข้าใจ
จะมีบางครั้งที่ประสิทธิภาพเป็นสิ่งสำคัญ เช่นถ้าคุณกำลังแสดงบางอย่างในวงวนหลายครั้งคุณอาจต้องการทิ้ง jQuery
โดยทั่วไปคุณสามารถแทนที่:
$(el).attr('someName');
ด้วย:
ด้านบนเป็นคำพูดไม่ดี getAttributeไม่ใช่การแทนที่ แต่จะดึงค่าของแอ็ตทริบิวต์ที่ส่งจากเซิร์ฟเวอร์และsetAttributeจะตั้งค่าที่สอดคล้องกัน จำเป็นในบางกรณี
ประโยคด้านล่างเรียงลำดับของมันครอบคลุม ดูคำตอบนี้เพื่อการรักษาที่ดีขึ้น
el.getAttribute('someName');
... เพื่อเข้าถึงแอตทริบิวต์โดยตรง โปรดทราบว่าแอตทริบิวต์นั้นไม่เหมือนกับคุณสมบัติ (แม้ว่าบางครั้งก็จะสะท้อนซึ่งกันและกัน) แน่นอนว่ามีsetAttributeเกินไป
สมมติว่าคุณมีสถานการณ์ที่ได้รับหน้าที่คุณต้องแกะแท็กทั้งหมดบางประเภท มันสั้นและง่ายกับ jQuery:
$('span').unwrap(); // unwrap all span elements
แต่ถ้ามีจำนวนมากคุณอาจต้องการ DOM API ดั้งเดิมเล็กน้อย:
var spans = document.getElementsByTagName('span');
while( spans[0] ) {
var parent = spans[0].parentNode;
while( spans[0].firstChild ) {
parent.insertBefore( spans[0].firstChild, spans[0]);
}
parent.removeChild( spans[0] );
}
รหัสนี้ค่อนข้างสั้นมันทำงานได้ดีกว่ารุ่น jQuery และสามารถทำเป็นฟังก์ชั่นที่ใช้ซ้ำได้ในห้องสมุดส่วนตัวของคุณ
มันอาจดูเหมือนฉันมีห่วงอนันต์กับด้านนอกwhileเพราะwhile(spans[0])แต่เป็นเพราะเราจัดการกับ "รายการสด" parent.removeChild(span[0]);จะได้รับการปรับปรุงเมื่อเราทำ นี่เป็นคุณสมบัติที่ดีงามที่เราพลาดเมื่อทำงานกับ Array (หรือวัตถุที่คล้าย Array) แทน
this.idหรือไม่?