A) Просто + = с помощью thumbContainer.innerHTML
Никогда не делайте этого. Это должно сериализовать весь контент в HTML, добавить строку и проанализировать все обратно. Это медленно (делать это в цикле - особенно плохие новости), и он потеряет все ссылки JavaScript, обработчики событий и т. Д. .
IE insertAdjacentHTML
сделает это более эффективно. Он также является частью HTML5, но пока еще не получил широкого распространения.
используя appendChild?
Да, все в порядке. Если у вас есть много больших пальцев, он начнет работать медленнее (но не так плохо, как повторная обработка innerHTML каждый раз). Создание DocumentFragment для вставки нескольких элементов в список дочерних узлов контейнера может помочь в некоторых случаях. Комбинация DocumentFragment с Range может сделать еще больше, но становится труднее писать совместимо, так как реализация Range в IE так StRange.
В любом случае, поскольку вы, похоже, ничего не делаете с отдельными узлами оболочки, почему бы просто не объединить все миниатюрные HTML-строки перед анализом?
для (var child в shell.childNodes) {
Не используйте for..in
для типов последовательности, это не будет делать то, что вы думаете. Он предназначен только для использования против Object
, используемого в качестве отображения. Правильный способ перебора массива или NodeList - старый for (var i= 0; i<sequence.length; i++)
.