Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.07.2010, 17:51
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

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

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, хотя алерт с этим элементом выдаёт. Где ошибка?
Ответить с цитированием
  #2 (permalink)  
Старый 12.07.2010, 17:53
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

while (wrapper.childNodes.length) {
    where.appendChild(wrapper.childNodes[0]);
}
Ответить с цитированием
  #3 (permalink)  
Старый 12.07.2010, 18:30
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

Спасибо. А почему с for не работает?
Ответить с цитированием
  #4 (permalink)  
Старый 12.07.2010, 18:36
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Потому что элементы перемещаются из одного узла в другой. length меняется.
Ответить с цитированием
  #5 (permalink)  
Старый 13.07.2010, 11:15
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

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

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


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
Функция которая работает на OnLoad не хочет работать на OnClick libinstyle Элементы интерфейса 6 23.03.2010 01:42
Почему не работает функция? Vitaly jQuery 10 31.07.2009 17:01
Safari + ajax некорректно работает, а в других работает demi AJAX и COMET 35 15.07.2009 14:11
Переодическое обновление значений для графика, функция для обновления значений yupa87 Общие вопросы Javascript 0 09.07.2009 14:48