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
หรือไม่?