Когда я запускаю этот скрипт, страница постоянно загружается и в конечном итоге зависает. Это потому, что каждый раз, когда я создаю элемент, вызывается главный DOMContentLoaded
прослушиватель?Поддерживает ли document.createElement запуск прослушивателя событий DOMContentLoaded?
Если да, то как я могу остановить это рекурсивное поведение и просто добавить один узел к каждому существующему узлу?
//Waits for page to load
document.addEventListener('DOMContentLoaded', function() {
//Get all elements
var items = document.getElementsByTagName("*");
//Loop through entire DOM
for (var i = 0; i < items.length; i++) {
//If it is not a text node
if (!(items[i].nodeType == 3)){
//Create a div
var newDiv = document.createElement("div");
//Add div to current object
items[i].appendChild(newDiv);
}
}
});
Вау удивительными, работает отлично! Как работает линия 2? Как он избавился от «живой» проблемы? –
@ ЭрикНелсон: Рад, что это помогло. «Array.from()» - это просто утилита, которая преобразует любой объект, подобный массиву, в фактический массив, который не имеет «живых» характеристик. Синтаксис '[... collection]' аналогичен. Это просто синтаксис литерала массива, но использует синтаксис '...' spread для копирования коллекции в создаваемый массив. –