Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.07.2014, 13:45
Кандидат Javascript-наук
Отправить личное сообщение для zhurchik Посмотреть профиль Найти все сообщения от zhurchik
 
Регистрация: 04.06.2011
Сообщений: 116

createElement VS innerHTML
Здравствуйте Уважаемые форумчане.
Вкратце, у меня имеется ID а именно document.getElementById("container")
И мне нужно создать форму на лету с разными полями. Так вот, как лучше, создать форму и поля при помощи createElement и затем вставить их в ID container или же готовую форму вставить через document.getElementById("container").innerHTML = ""?

Какой способ будет работать быстрее и какой целесообразнее.
Заранее спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 29.07.2014, 13:54
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

innerHTML
Ответить с цитированием
  #3 (permalink)  
Старый 29.07.2014, 14:06
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

Вообще, если форма большая - она должна прилетать с сервера. А если на пару элементов - то createElement удобнее.
В целом innerHTML работает быстрее, но если у вас возникла необходимость его использовать для чего-то большего, нежели вставки текста - скорее всего что-то вы делаете не так.
__________________
29375, 35
Ответить с цитированием
  #4 (permalink)  
Старый 29.07.2014, 14:24
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

По-моему разница в скорости тут несущественна. Потому как если форма нарисуется не за 100 ms, а за 200 ms - разницы Вы не заметите.
Существует несколько критериев при выборе того или иного подхода. В частности, когда надо сделать адаптивную верстку и обеспечить кроссбраузерность. Я сталкивался с ситуациями, когда в innerHTML не пропишешь все вариации, используя CSS, либо CSS становится монстрообразным. В этом случае лучше создавать форму поэлементно на javscript, используя проверки "if/else".
Все критерии описывать не буду. Скеажу лишь о том, что мне нравится. При использованиии var myobject = createElement() мы сразу получаем указатель на объекты (myobject), с которыми дальше можно работать, а при использовании innerHTML Вам потом придется каждый раз делать getElementById(). И если элементов на странице много, то как раз здесь и возможно будет заметно замедление работы.
Ответить с цитированием
  #5 (permalink)  
Старый 29.07.2014, 14:38
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Маэстро,
Если уж речь идет окакой-то большой форме с логикой создания то проще уж пользоваться шаблонизаторами. Например я пользую underscorejs, очень удобно.
Ответить с цитированием
  #6 (permalink)  
Старый 29.07.2014, 14:44
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Я соглашусь с Маэстро. Зачастую требуется на созданные элементы навешивать обработчики событий и при createElement это делать гораздо проще.
Добавлю только, что если форма большая, то имеет смысл вставлять фрагментом, а не поэлементно
Ответить с цитированием
  #7 (permalink)  
Старый 29.07.2014, 14:47
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

Складывается впечатление что это разные способы создания элементов/страницыHTML и у них есть свои достоинства и недостатки
Ответить с цитированием
  #8 (permalink)  
Старый 29.07.2014, 15:53
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Вы прикалываетесь чтоли, какой createElement?! В 99% случаях поля ввода завернуты во всякие label и другие обертки, что их тоже все создавать? А если верстальщику захочется что-нибудь поменять?
Шаблонизатору скармливаются параметры, в ответ получают HTML-код, который вставляется через innerHTML...
Ответить с цитированием
  #9 (permalink)  
Старый 29.07.2014, 16:27
Кандидат Javascript-наук
Отправить личное сообщение для zhurchik Посмотреть профиль Найти все сообщения от zhurchik
 
Регистрация: 04.06.2011
Сообщений: 116

Aetae, У меня JS подключается динамически поэтому по факту и форма грузится с сервера.

Что Вы подразумеваете под тем, что если форма небольшая то и createElement'ом можно обойтись? Просто я не совсем понял разницу между большой и маленькой, по сути то принцип один.
Ответить с цитированием
  #10 (permalink)  
Старый 29.07.2014, 16:29
Кандидат Javascript-наук
Отправить личное сообщение для zhurchik Посмотреть профиль Найти все сообщения от zhurchik
 
Регистрация: 04.06.2011
Сообщений: 116

Маэстро,
Я понял Вашу мысль, спасибо!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выдаёт ошибку при использовании innerHTML doox911 Общие вопросы Javascript 4 17.01.2014 12:01
innerHTML....? Hapson Элементы интерфейса 4 24.07.2013 01:33
Как в браузерах реализуются функции DOM (например createElement) iamme Общие вопросы Javascript 7 02.09.2011 20:26
innerHTML and z-index ViZ0R Общие вопросы Javascript 5 12.08.2009 10:28
ошибка с innerHTML Gekt0r Общие вопросы Javascript 15 21.08.2008 11:57