Jawaban yang saat ini diterima salah tentang innerHTML
menjadi lebih lambat (setidaknya di IE dan Chrome), seperti yang disebutkan dengan benar m93a.
Chrome dan FF secara dramatis lebih cepat menggunakan metode ini (yang akan menghancurkan data jquery terlampir):
var cNode = node.cloneNode(false);
node.parentNode.replaceChild(cNode, node);
dalam beberapa detik untuk FF dan Chrome, dan tercepat di IE:
node.innerHTML = '';
InnerHTML tidak akan memusnahkan event handler Anda atau menghancurkan referensi jquery , juga direkomendasikan sebagai solusi di sini:
https://developer.mozilla.org/en-US/docs/Web/API/Element.innerHTML .
Metode manipulasi DOM tercepat (masih lebih lambat dari dua sebelumnya) adalah penghapusan Rentang, tetapi rentang tidak didukung sampai IE9.
var range = document.createRange();
range.selectNodeContents(node);
range.deleteContents();
Metode lain yang disebutkan tampaknya sebanding, tetapi jauh lebih lambat daripada innerHTML, kecuali untuk outlier, jquery (1.1.1 dan 3.1.1), yang jauh lebih lambat dari yang lain:
$(node).empty();
Bukti di sini:
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 baru untuk reboot jsperf karena mengedit URL lama tidak berfungsi)
"Per-test-loop" Jsperf sering dipahami sebagai "per-iterasi", dan hanya iterasi pertama yang memiliki node untuk dihapus sehingga hasilnya tidak berarti, pada saat memposting ada tes di utas ini yang dibuat secara tidak benar.