Я хотел бы посетить каждый элемент (используя только JavaScript, ни JQuery или любой другой библиотеки JavaScript) в живом HTMLCollection или NodeList, например, коллекции, возвращаемой var elements = document.getElementsByClassName('class-name');
Посетите каждый элемент HTMLCollection/NodeList
Если DOM не меняется, то я могу сделать это с помощью for
цикла:
for(var i=0; i<elements.length; i++)
{
//Do something with elements[i]
}
Но что делать в ситуации, когда for
цикл по-прежнему работает, и есть добавление или удаление элементов с классом class-name
. Если element
был удален или добавлен, индексы будут меняться.
Итак, как я могу убедиться, что в то время как петля for
работает, нет element
в elements
отсутствует только с использованием JavaScript.
Если DOM изменяется, это связано с тем, что код, который у вас есть в вашем цикле, меняет его. Вы не можете отслеживать изменения, которые вы делаете? –
Что делать, если есть другой скрипт, который меняет DOM? –
Это отчасти зависит от того, что вы делаете. Одним из возможных решений было бы сделать копию NodeList в простой массив JavaScript. * edit * Нельзя запускать какой-либо другой скрипт во время работы вашего цикла; JavaScript не работает таким образом (в любом случае, в браузере). – Pointy