15 วิธีจาวาสคริปต์สำหรับการจัดการ DOM สำหรับนักพัฒนาเว็บ
ในฐานะนักพัฒนาเว็บคุณต้องจัดการบ่อยครั้ง DOM, โมเดลวัตถุที่เบราว์เซอร์ใช้ ระบุโครงสร้างตรรกะ ของเว็บเพจและใช้โครงสร้างนี้เป็น แสดงองค์ประกอบ HTML บนหน้าจอ.
HTML กำหนด โครงสร้าง DOM เริ่มต้น. อย่างไรก็ตามในหลายกรณีคุณอาจต้องการจัดการกับ JavaScript โดยทั่วไปเพื่อ เพิ่มฟังก์ชันพิเศษ ไปยังเว็บไซต์.

ในโพสต์นี้คุณจะพบรายการ 15 เมธอด JavaScript พื้นฐาน ที่ ช่วยเหลือการจัดการ DOM. คุณน่าจะใช้วิธีการเหล่านี้บ่อยครั้งในรหัสของคุณและคุณจะชนพวกเขาในบทช่วยสอน JavaScript ของเรา.
1. querySelector ()
querySelector () วิธี ส่งคืนองค์ประกอบแรกที่ตรงกับตัวเลือก CSS อย่างน้อยหนึ่งตัว. หากไม่พบข้อมูลที่ตรงกันจะส่งคืน โมฆะ.
ก่อน querySelector () เปิดตัวนักพัฒนาใช้กันอย่างแพร่หลาย getElementById () วิธีการซึ่ง ดึงองค์ประกอบที่มีการระบุ รหัส ราคา.
แม้ว่า getElementById () ยังคงเป็นวิธีที่มีประโยชน์ แต่ด้วยวิธีการใหม่กว่า querySelector () และ querySelectorAll () วิธีการที่เรามีอิสระที่จะ องค์ประกอบเป้าหมายตามตัวเลือก CSS ใด ๆ, ทำให้เรามีความยืดหยุ่นมากขึ้น.
วากยสัมพันธ์
var ele = document.querySelector (ตัวเลือก);
เอเล- องค์ประกอบแรกที่ตรงกันหรือโมฆะ(ถ้าไม่มีองค์ประกอบใดตรงกับตัวเลือก)ผู้เลือก- ตัวเลือก CSS อย่างน้อยหนึ่งตัวเช่น"#fooId",".fooClassName"," .class1.class2", หรือ".class1, .class2"
ตัวอย่างรหัส
ในตัวอย่างนี้ก่อน วรรคหนึ่ง วรรคสอง วรรคสาม ทดสอบ แตกต่าง องค์ประกอบที่ตรงกันจะถูกส่งกลับเป็น ตัวอย่างด้านล่างใช้ HTML เช่นเดียวกับก่อนหน้านี้ อย่างไรก็ตามในตัวอย่างนี้ย่อหน้าทั้งหมดจะถูกเลือกด้วย วรรคหนึ่ง วรรคสอง วรรคสาม เหตุการณ์ที่เกิดขึ้น อ้างถึงสิ่งที่เกิดขึ้นกับองค์ประกอบ HTML เช่นการคลิกการโฟกัสหรือการโหลดซึ่งเราสามารถโต้ตอบกับ JavaScript ได้ เราสามารถกำหนดฟังก์ชั่น JS ให้กับ ฟัง สำหรับเหตุการณ์เหล่านี้ในองค์ประกอบและทำบางสิ่งบางอย่างเมื่อเหตุการณ์เกิดขึ้น. คุณสามารถทำได้สามวิธี กำหนดฟังก์ชั่นให้กับเหตุการณ์บางอย่าง. ถ้า วิธีการ หยุดการเดือดปุด ๆ ของเหตุการณ์เช่นป้องกันการโทรของผู้ฟังเหตุการณ์ใด ๆ สำหรับประเภทเหตุการณ์เดียวกันในบรรพบุรุษขององค์ประกอบ. ในการใช้คุณสมบัตินี้คุณสามารถใช้ 2 ไวยากรณ์: ผู้ฟังจะถูกเรียกเพียงครั้งแรกที่มีเหตุการณ์เกิดขึ้นจากนั้นจะถูกนำออกจากกิจกรรมโดยอัตโนมัติและจะไม่ถูกเรียกใช้อีกต่อไป. การกระทำเริ่มต้นของเหตุการณ์ไม่สามารถหยุดได้ด้วยเมธอด PreventDefault (). ในตัวอย่างนี้เราเพิ่มฟังเหตุการณ์คลิกที่เรียกว่า มอบหมายให้ ใช้ไวยากรณ์เดียวกับที่กล่าวไว้ข้างต้น ติดตามตัวอย่างรหัสที่เราใช้ที่ คุณสามารถเพิ่มองค์ประกอบนี้ในหน้าเว็บในภายหลังได้ด้วยการใช้ที่แตกต่างกัน วิธีการสำหรับการแทรก DOM, เช่น ด้วยตัวอย่างต่อไปนี้คุณสามารถสร้างองค์ประกอบย่อหน้าใหม่: เด็กที่จะแทรกสามารถเป็นได้ทั้ง องค์ประกอบที่สร้างขึ้นใหม่, หรือ มีอยู่แล้ว. ในกรณีหลังมันจะถูกย้ายจากตำแหน่งก่อนหน้าไปยังตำแหน่งของลูกคนสุดท้าย. ในตัวอย่างนี้เราใส่ ในการสาธิตเชิงโต้ตอบตัวอักษรจาก ตรวจสอบวิธีการ ในตัวอย่างนี้เราลบ ในตัวอย่างนี้องค์ประกอบของเด็ก เมื่อคุณต้องสร้างองค์ประกอบใหม่ที่จำเป็นต้องมี เหมือนกับองค์ประกอบที่มีอยู่แล้ว บนหน้าเว็บคุณสามารถทำได้ง่ายๆ สร้างสำเนาขององค์ประกอบที่มีอยู่แล้ว ใช้ ในตัวอย่างนี้เราสร้างสำเนาสำหรับ ผลที่ตามมา, หากองค์ประกอบลูกอ้างอิงไม่อยู่หรือคุณผ่านอย่างชัดเจน ในตัวอย่างนี้เราสร้างใหม่ การสาธิตเชิงโต้ตอบนี้ทำงานคล้ายกับการสาธิตก่อนหน้าของเราที่เป็นของ มัน สร้าง ทำไมเราไม่เพิ่มองค์ประกอบลงในทรี DOM โดยตรง เพราะการแทรก DOM ทำให้เกิดการเปลี่ยนแปลงเค้าโครง, และมันเป็น กระบวนการเบราว์เซอร์ที่มีราคาแพง เนื่องจากการแทรกองค์ประกอบที่ตามมาหลายครั้งจะทำให้เกิดการเปลี่ยนแปลงเค้าโครงมากขึ้น. ในทางกลับกันการเพิ่มองค์ประกอบให้กับ ในตัวอย่างนี้เราสร้างหลายแถวของตารางและเซลล์ด้วย ดังนั้นห้าแถว - แต่ละแถวมีหนึ่งเซลล์ที่มีตัวเลขตั้งแต่ 1 ถึง 5 เป็นเนื้อหา - จะถูกแทรกภายในตาราง. บางครั้งคุณต้องการ ตรวจสอบค่าคุณสมบัติ CSS ขององค์ประกอบก่อนทำการเปลี่ยนแปลงใด ๆ คุณสามารถใช้ ในตัวอย่างนี้เราได้รับและแจ้งเตือนการคำนวณ ในตัวอย่างนี้เราเพิ่ม ในตัวอย่างนี้เราแจ้งเตือนค่าของ ในตัวอย่างนี้เราลบ querySelector () วิธีการและสีของมันจะเปลี่ยนเป็นสีแดง.
var firstDiv = document.querySelector ('div'); firstDiv.style.color = 'red'; การสาธิตเชิงโต้ตอบ
querySelector () วิธีการในการสาธิตเชิงโต้ตอบต่อไปนี้ เพียงพิมพ์ตัวเลือกที่ตรงกับสิ่งที่คุณสามารถหาได้ในกล่องสีฟ้า (เช่น. #สาม) และคลิกปุ่มเลือก โปรดทราบว่าถ้าคุณพิมพ์ .กลุ่ม, ตัวอย่างแรกเท่านั้น จะถูกเลือก.2.
querySelectorAll ()querySelector () ที่ส่งกลับเฉพาะอินสแตนซ์แรกขององค์ประกอบที่ตรงกันทั้งหมด, querySelectorAll () ส่งคืนองค์ประกอบทั้งหมดที่ตรงกับตัวเลือก CSS ที่ระบุ.NodeList วัตถุที่จะเป็นวัตถุว่างเปล่าหากไม่พบองค์ประกอบที่ตรงกัน.วากยสัมพันธ์
var eles = document.querySelectorAll (ตัวเลือก);
eles - NodeList วัตถุที่มีองค์ประกอบที่ตรงกันทั้งหมดเป็นค่าคุณสมบัติ วัตถุนั้นว่างเปล่าหากไม่พบรายการที่ตรงกัน.ผู้เลือก - ตัวเลือก CSS อย่างน้อยหนึ่งตัวเช่น "#fooId", ".fooClassName", " .class1.class2", หรือ ".class1, .class2"ตัวอย่างรหัส
querySelectorAll (), และเป็นสีฟ้า.
var ย่อหน้า = document.querySelectorAll ('p'); สำหรับ (var p ของย่อหน้า) p.style.color = 'blue'; 3.
addEventListener ()foo () เป็นฟังก์ชั่นที่กำหนดเองคุณสามารถลงทะเบียนได้ เป็นผู้ฟังเหตุการณ์คลิก (เรียกว่าเมื่อองค์ประกอบปุ่มถูกคลิก) ในสามวิธี:
var btn = document.querySelector ('ปุ่ม'); btn.onclick = foo; var btn = document.querySelector ('ปุ่ม'); btn.addEventListener ('คลิก', foo); addEventListener () (ทางออกที่สาม) มี ข้อดีบางอย่าง; มันเป็นมาตรฐานล่าสุด - อนุญาตให้กำหนดมากกว่าหนึ่งฟังก์ชั่นเป็นผู้ฟังเหตุการณ์หนึ่งเหตุการณ์ - และมาพร้อมกับชุดตัวเลือกที่มีประโยชน์.วากยสัมพันธ์
ele.addEventListener (evt, listener, [options]);
เอเล - องค์ประกอบ HTML ที่ผู้ฟังเหตุการณ์จะรับฟัง.EVT - เหตุการณ์เป้าหมาย.ผู้ฟัง - โดยทั่วไปแล้วฟังก์ชัน JavaScript.ตัวเลือก - (เป็นทางเลือก) วัตถุที่มีชุดของคุณสมบัติบูลีน (ด้านล่าง).ตัวเลือก จะเกิดอะไรขึ้นเมื่อตั้งค่าเป็น จริง?การจับกุม ele.addEventListener (evt, listener, true)ele.addEventListener (evt, listener, capture: true);ครั้งหนึ่ง อยู่เฉยๆ ตัวอย่างรหัส
foo, ไปที่ แท็ก HTML.
var btn = document.querySelector ('ปุ่ม'); btn.addEventListener ( 'คลิก', foo); ฟังก์ชั่น foo () alert ('hello'); การสาธิตเชิงโต้ตอบ
foo () ฟังก์ชั่นที่กำหนดเองเป็นผู้ฟังเหตุการณ์ในสามเหตุการณ์ต่อไปนี้: อินพุต, คลิก หรือ วางเมาส์ & ทริกเกอร์เหตุการณ์ที่เลือกในฟิลด์อินพุตด้านล่างโดยการโฮเวอร์คลิกหรือพิมพ์.4.
removeEventListener ()removeEventListener () วิธี แยกผู้ฟังเหตุการณ์ เพิ่มก่อนหน้านี้ด้วย addEventListener () วิธี จากเหตุการณ์ที่กำลังฟังอยู่.วากยสัมพันธ์
ele.removeEventListener (EVT, ฟัง, [ตัวเลือก]);
addEventListener () วิธีการ (ยกเว้นสำหรับ ครั้งหนึ่ง ตัวเลือกที่ไม่รวม) ตัวเลือกที่ใช้จะเฉพาะเจาะจงมากเกี่ยวกับการระบุฟังที่จะแยกออก.ตัวอย่างรหัส
addEventListener (), ที่นี่เราลบฟังเหตุการณ์คลิกที่เรียกว่า foo จาก ธาตุ. btn.removeEventListener ( 'คลิก', foo);
5.
createElement ()createElement () วิธี สร้างองค์ประกอบ HTML ใหม่ ใช้ ชื่อของแท็ก HTML ที่จะสร้างเช่น 'p' หรือ 'div'.AppendChild () (ดูภายหลังในโพสต์นี้).วากยสัมพันธ์
document.createElement (tagname);
tagname - ชื่อของแท็ก HTML ที่คุณต้องการสร้าง. ตัวอย่างรหัส
var pEle = document.createElement ('p') 6.
appendChild ()appendChild () วิธี เพิ่มองค์ประกอบเป็นลูกคนสุดท้าย ไปยังองค์ประกอบ HTML ที่เรียกใช้วิธีนี้.วากยสัมพันธ์
ele.appendChild (childEle)
เอเล - องค์ประกอบ HTML ที่ childEle ถูกเพิ่มเป็นลูกคนสุดท้าย.childEle - องค์ประกอบ HTML ที่เพิ่มเป็นลูกคนสุดท้ายของ เอเล.ตัวอย่างรหัส
องค์ประกอบนั้นเป็นลูกของ appendChild () และดังกล่าวข้างต้น createElement () วิธีการ.
var div = document.querySelector ('div'); var strong = document.createElement ('strong'); strong.textContent = 'Hello'; div.appendChild (แข็งแกร่ง); การสาธิตเชิงโต้ตอบ
รุ่น A ประเภทสิทธิ ไปยัง #R เป็นองค์ประกอบลูกของ # พ่อแม่หนึ่ง, # พ่อแม่สอง, และ # แม่สาม ตัวเลือกรหัส.appendChild () วิธีการทำงานโดย พิมพ์ชื่อผู้ปกครองและชื่อผู้เลือกย่อยหนึ่งรายการลงในฟิลด์ป้อนข้อมูลด้านล่าง. คุณสามารถเลือกเด็กที่เป็นของผู้ปกครองคนอื่นได้เช่นกัน.7.
RemoveChild ()RemoveChild () วิธี ลบองค์ประกอบลูกที่ระบุ จากองค์ประกอบ HTML ที่เรียกใช้วิธีนี้.วากยสัมพันธ์
ele.removeChild (childEle)
เอเล - องค์ประกอบหลักของ childEle.childEle - องค์ประกอบย่อยของ เอเล.ตัวอย่างรหัส
องค์ประกอบที่เราเพิ่มเมื่อเป็นเด็กใน appendChild () วิธี. div.removeChild (แข็งแกร่ง);
8.
replaceChild ()replaceChild () วิธี แทนที่องค์ประกอบลูกด้วยอีกองค์ประกอบหนึ่ง เป็นขององค์ประกอบหลักที่เรียกใช้วิธีนี้.วากยสัมพันธ์
ele.replaceChild (newChildEle, oldChileEle)
เอเล - องค์ประกอบหลักที่จะแทนที่ลูก.newChildEle - องค์ประกอบย่อยของ เอเล ที่จะเข้ามาแทนที่ oldChildEle.oldChildEle - องค์ประกอบย่อยของ เอเล, ที่จะถูกแทนที่ด้วย newChildEle.ตัวอย่างรหัส
เป็นของ แท็ก.
var em = document.createElement ('em'); var strong = document.querySelector ('strong'); var div = document.querySelector ('div'); em.textContent = 'hi'; div.replaceChild (em, strong); 9.
cloneNode ()cloneNode () วิธี.วากยสัมพันธ์
var dupeEle = ele.cloneNode ([ลึก])dupeEle - คัดลอกจาก เอเล ธาตุ.เอเล - องค์ประกอบ HTML ที่จะคัดลอก.ลึก - (เป็นทางเลือก) ค่าบูลีน หากตั้งไว้ที่ จริง, dupeEle จะมีองค์ประกอบของเด็กทั้งหมด เอเล มีถ้ามันถูกตั้งค่าเป็น เท็จ มันจะถูกโคลนโดยไม่มีลูก.ตัวอย่างรหัส
องค์ประกอบด้วย cloneNode (), จากนั้นเราเพิ่มลงใน appendChild () วิธี. องค์ประกอบทั้งกับ สวัสดี สตริงเป็นเนื้อหา.
var strong = document.querySelector ('strong'); สำเนา var = strong.cloneNode (จริง); var div = document.querySelector ('div'); div.appendChild (สำเนา); 10.
insertBefore ()insertBefore () วิธี เพิ่มองค์ประกอบลูกที่ระบุไว้ก่อนองค์ประกอบลูกอีก. วิธีการที่ถูกเรียกโดยองค์ประกอบหลัก.โมฆะ แทนที่องค์ประกอบของเด็กที่จะแทรก เป็นลูกคนสุดท้ายของผู้ปกครอง (คล้ายกับ appendChild ()).วากยสัมพันธ์
ele.insertBefore (newEle, refEle);
เอเล - องค์ประกอบหลัก.newEle - องค์ประกอบ HTML ใหม่ที่จะแทรก.refEle - องค์ประกอบย่อยของ เอเล ก่อนที่ newEle จะถูกแทรก.ตัวอย่างรหัส
องค์ประกอบที่มีข้อความอยู่ข้างในและเพิ่มเข้าไป ก่อน องค์ประกอบภายใน
var em = document.createElement ('em'); var strong = document.querySelector ('strong'); var div = document.querySelector ('div'); em.textContent = 'hi'; div.insertBefore (em, strong); การสาธิตเชิงโต้ตอบ
appendChild () วิธี. ที่นี่คุณจะต้องพิมพ์ตัวเลือก id ขององค์ประกอบย่อยสองรายการ (จาก รุ่น A ประเภทสิทธิ ไปยัง #R) ลงในกล่องป้อนข้อมูลและคุณสามารถดูได้ว่า insertBefore () เมธอดย้ายชายด์ที่ระบุแรก ก่อน ที่สอง.11.
createDocumentFragment ()createDocumentFragment () วิธีการอาจไม่เป็นที่รู้จักกันดีเหมือนกับคนอื่น ๆ ในรายการนี้ แต่ก็เป็นวิธีที่สำคัญโดยเฉพาะอย่างยิ่งถ้าคุณต้องการ แทรกองค์ประกอบหลายรายการเป็นกลุ่ม, เช่นการเพิ่มหลายแถวลงในตาราง.DocumentFragment วัตถุ, ซึ่งเป็นหลักคือ โหนด DOM ที่ไม่ได้เป็นส่วนหนึ่งของทรี DOM. เป็นเหมือนบัฟเฟอร์ที่เราสามารถเพิ่มและจัดเก็บองค์ประกอบอื่น ๆ (เช่นหลายแถว) ก่อนที่จะเพิ่มลงในโหนดที่ต้องการในต้นไม้ DOM (เช่นไปยังตาราง).DocumentFragment วัตถุ ไม่ทำให้การเปลี่ยนแปลงเค้าโครงใด ๆ, เพื่อให้คุณสามารถเพิ่มองค์ประกอบได้มากเท่าที่คุณต้องการก่อนที่จะส่งไปยังทรี DOM ทำให้เกิดการเปลี่ยนแปลงเลย์เอาต์ในตอนนี้เท่านั้น.วากยสัมพันธ์
document.createDocumentFragment ()
ตัวอย่างรหัส
createElement () วิธีการจากนั้นเพิ่มพวกเขาไปยัง DocumentFragment วัตถุในที่สุดเพิ่มชิ้นส่วนเอกสารนั้นลงใน HTML ใช้
appendChild () วิธี.
var table = document.querySelector ("table"); var df = document.createDocumentFragment (); สำหรับ (var i = 0; i<5; i++) var td = document.createElement("td"); var tr = document.createElement("tr"); td.textContent = i; tr.appendChild(td) df.appendChild(tr); table.appendChild(df); 12.
getComputedStyle ()ele.style คุณสมบัติที่จะทำเช่นเดียวกัน getComputedStyle () วิธีการที่ได้รับการทำเพียงเพื่อจุดประสงค์นี้มัน ส่งคืนค่าที่คำนวณได้แบบอ่านอย่างเดียว ของคุณสมบัติ CSS ทั้งหมดขององค์ประกอบ HTML ที่ระบุ.วากยสัมพันธ์
var style = getComputedStyle (ele, [pseudoEle])
สไตล์ - CSSStyleDeclaration วัตถุที่ส่งคืนโดยวิธีการ มันเก็บคุณสมบัติ CSS ทั้งหมดและค่าของ เอเล ธาตุ.เอเล - องค์ประกอบ HTML ซึ่งมีการดึงค่าคุณสมบัติ CSS.pseudoEle - (เป็นทางเลือก) สตริงที่แสดงถึงองค์ประกอบปลอม (ตัวอย่างเช่น, ':หลังจาก') หากมีการกล่าวถึงคุณสมบัติ CSS ขององค์ประกอบหลอกที่ระบุที่เกี่ยวข้อง เอเล จะถูกส่งกลับ.ตัวอย่างรหัส
ความกว้าง ค่าของ getComputedStyle () วิธี.
var style = getComputedStyle (document.querySelector ('div')); การแจ้งเตือน (style.width); 13.
setAttribute ()setAttribute () วิธีการอย่างใดอย่างหนึ่ง เพิ่มคุณสมบัติใหม่ ไปยังองค์ประกอบ HTML หรือ อัพเดตค่า ของแอตทริบิวต์ที่มีอยู่แล้ว.วากยสัมพันธ์
ele.setAttribute (ชื่อค่า);
เอเล - องค์ประกอบ HTML ที่มีการเพิ่มแอตทริบิวต์หรือมีการอัปเดตแอตทริบิวต์.ชื่อ - ชื่อของแอตทริบิวต์.ราคา - ค่าของคุณสมบัติ.ตัวอย่างรหัส
contenteditable คุณลักษณะที่จะ setAttribute () ซึ่งจะทำให้เนื้อหาสามารถแก้ไขได้. var div = document.querySelector ('div'); div.setAttribute ( 'contenteditable' ") 14.
getAttribute ()getAttribute () วิธี ส่งคืนค่าของแอตทริบิวต์ที่ระบุ เป็นขององค์ประกอบ HTML ที่แน่นอน.วากยสัมพันธ์
ele.getAttribute (ชื่อ);
เอเล - องค์ประกอบ HTML ซึ่งมีการร้องขอคุณสมบัติ.ชื่อ - ชื่อของแอตทริบิวต์.ตัวอย่างรหัส
contenteditable คุณลักษณะที่เป็นของ getAttribute () วิธี. var div = document.querySelector ('div'); การแจ้งเตือน (div.getAttribute ( 'contenteditable')) 15.
removeAttribute ()removeAttribute () วิธี ลบแอตทริบิวต์ที่กำหนด ขององค์ประกอบ HTML เฉพาะ.วากยสัมพันธ์
ele.removeAttribute (ชื่อ);เอเล - องค์ประกอบ HTML ที่จะลบแอตทริบิวต์.ชื่อ - ชื่อของแอตทริบิวต์.ตัวอย่างรหัส
contenteditable คุณลักษณะจาก var div = document.querySelector ('div'); div.removeAttribute ( 'contenteditable');


