คำตอบที่ยอมรับในปัจจุบันนั้นผิดเกี่ยวกับinnerHTML
การช้าลง (อย่างน้อยใน IE และ Chrome) ตามที่ m93a กล่าวถึงอย่างถูกต้อง
Chrome และ FF เร็วขึ้นอย่างมากโดยใช้วิธีนี้ (ซึ่งจะทำลายข้อมูล jquery ที่แนบมา):
var cNode = node.cloneNode(false);
node.parentNode.replaceChild(cNode, node);
ในอีกไม่กี่วินาทีสำหรับ FF และ Chrome และเร็วที่สุดใน IE:
node.innerHTML = '';
InnerHTML จะไม่ทำลายตัวจัดการเหตุการณ์ของคุณหรือทำลายอ้างอิง jQueryก็ยังแนะนำเป็นวิธีแก้ปัญหาที่นี่:
https://developer.mozilla.org/en-US/docs/Web/API/Element.innerHTML
วิธีการจัดการ DOM ที่เร็วที่สุด (ยังช้ากว่าสองรายการก่อนหน้า) คือการลบช่วง แต่ไม่รองรับช่วงจนถึง IE9
var range = document.createRange();
range.selectNodeContents(node);
range.deleteContents();
วิธีอื่น ๆ ที่กล่าวมาดูเหมือนจะเปรียบเทียบกัน แต่ช้ากว่า innerHTML มากยกเว้น outquery, jquery (1.1.1 และ 3.1.1) ซึ่งช้ากว่าสิ่งอื่นมาก:
$(node).empty();
หลักฐานที่นี่:
http://jsperf.com/innerhtml-vs-removechild/167 http://jsperf.com/innerhtml-vs-removechild/300
https://jsperf.com/remove-all-child-elements-of-a- dom-node-in-javascript
(URL ใหม่สำหรับ jsperf รีบูตเนื่องจากการแก้ไข URL เก่าไม่ทำงาน)
"ต่อการทดสอบลูป" ของ Jsperf มักจะถูกเข้าใจว่าเป็น "การทำซ้ำต่อ" และเฉพาะการทำซ้ำครั้งแรกเท่านั้นที่มีโหนดที่จะลบดังนั้นผลลัพธ์จึงไม่มีความหมายในขณะที่ทำการโพสต์มีการทดสอบในชุดข้อความนี้