Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Некорректно работает функция для создания элементов (https://javascript.ru/forum/misc/10615-nekorrektno-rabotaet-funkciya-dlya-sozdaniya-ehlementov.html)

exec 12.07.2010 17:51

Некорректно работает функция для создания элементов
 
Некорректно работает функция для создания элементов:

Element = function( html, where ) {
	var wrapper = document.createElement( 'DIV' );
	wrapper.innerHTML = html;
	for ( var i = 0; i < wrapper.childNodes.length; i++ ) {
		where.appendChild( wrapper.childNodes[ i ] );
	}
}


Вызов

Element( '<div>1</div><u>2</u>', document.body );


добавляет только первый элемент. Проверял алертами, выдаёт только второй элемент. Консоль ошибок на втором элементе пишет Uncaught exception: Error: WRONG_ARGUMENTS_ERR, хотя алерт с этим элементом выдаёт. Где ошибка?

Kolyaj 12.07.2010 17:53

while (wrapper.childNodes.length) {
    where.appendChild(wrapper.childNodes[0]);
}

exec 12.07.2010 18:30

Спасибо. А почему с for не работает?

Kolyaj 12.07.2010 18:36

Потому что элементы перемещаются из одного узла в другой. length меняется.

subzey 13.07.2010 11:15

Кстати, exec, в глобальной видимости есть объект с именем Element (с большой буквы), который, вроде как, конструктор.
alert(document.createElement("foo") instanceof Element)

Ничего страшного в этом случае произойти, вроде, не должно, но вообще, остерегитесь от переопределения предопределенных объектов.


Часовой пояс GMT +3, время: 13:23.