Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.05.2013, 20:20
Кандидат Javascript-наук
Отправить личное сообщение для zzzzzz Посмотреть профиль Найти все сообщения от zzzzzz
 
Регистрация: 25.09.2012
Сообщений: 111

Тонкости js (для опытных)
Здравствуйте
В переменную DATA попадет текст полученный в результате аякс запроса.

document.body.innerHTML += "<div id='video" + id + "' class='dialogV'>" + data + "</div>";


var div = document.createElement('div');
div.className = 'dialogV';
div.id = 'video' + id;
div.innerHTML = data;
document.body.appendChild(div);


Оба варианта идентичны
Как правильно, почему так.
Проясните пожалуйста хоть что нибудь, в голове пока каша.
Ответить с цитированием
  #2 (permalink)  
Старый 29.05.2013, 20:37
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от zzzzzz
Как правильно, почему так.
По разному правильно и не только так -всё зависит от браузера и от особенностей конкретного браузера.

Если data это просто текстб то во втором варианте лучше не innerHTML, а текстовому узлу отдавать

Сообщение от zzzzzz
Тонкости js (для опытных)
Когда это стало тонкостью ? и почему только для опытных? -эта информация не является закрытой и есть как в http://learn.javascript.ru/ так и во многих других публикациях в т.ч и книгах

Последний раз редактировалось dmitriymar, 29.05.2013 в 20:40.
Ответить с цитированием
  #3 (permalink)  
Старый 29.05.2013, 20:52
Кандидат Javascript-наук
Отправить личное сообщение для zzzzzz Посмотреть профиль Найти все сообщения от zzzzzz
 
Регистрация: 25.09.2012
Сообщений: 111

Цитата:
а текстовому узлу отдавать
А как это отдавать текстовому узлу?

Цитата:
Тонкости js (для опытных)
То есть не париться как реализовывать, главное чтобы работало? Если так то я с удовольствием. Просто когда что-то пишу постоянно задумываюсь а правильно ли этот момент реализовал?, как делают профессионалы? и еще много всякой сомнительности в голову лезет, и меня это чуть напрягает.
Ответить с цитированием
  #4 (permalink)  
Старый 29.05.2013, 20:54
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,584

Сообщение от zzzzzz Посмотреть сообщение
Оба варианта идентичны
Не идентичны. Во втором случае происходит полная перезапись всего содержимого body, т.к. a += b равносильно a = a + b. Соответственно перерисовывается вся страница, сбрасываются все обработчики итд. Потому второй вариант предпочтительнее.

Также если data не содержит html то лучше добавлять её именно как текстовую ноду:
var div = document.createElement('div');
div.className = 'dialogV';
div.id = 'video' + id;
div.appendChild(document.createTextNode(data));
document.body.appendChild(div);
__________________
29375, 35

Последний раз редактировалось Aetae, 29.05.2013 в 20:57.
Ответить с цитированием
  #5 (permalink)  
Старый 29.05.2013, 20:54
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от zzzzzz
То есть не париться как реализовывать, главное чтобы работало?
т.е посмотреть на тесты для разных браузеров уже готовые и определится какой вариант использовать . И теорию в учебнике почитать
Ответить с цитированием
  #6 (permalink)  
Старый 29.05.2013, 21:24
Кандидат Javascript-наук
Отправить личное сообщение для zzzzzz Посмотреть профиль Найти все сообщения от zzzzzz
 
Регистрация: 25.09.2012
Сообщений: 111

В принципе понял, спасибо Вам огромное за ответы.
Ответить с цитированием
  #7 (permalink)  
Старый 29.05.2013, 22:46
Аспирант
Отправить личное сообщение для elnoro Посмотреть профиль Найти все сообщения от elnoro
 
Регистрация: 23.06.2011
Сообщений: 39

Я бы еще порекомендовал обратить внимание на читаемость исходного кода. Производительность - дело такое, критичное далеко не всегда, в отличие от читабельности.
Вот тут обсуждение на тему: http://habrahabr.ru/post/166109/ .
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
fight code.... js игрулька для программистов l-liava-l Оффтопик 8 29.03.2013 12:24
JS Drag&Drop для созданного div в FireFox фонарик Общие вопросы Javascript 2 28.02.2013 21:34
Обмен сообщениями между js загруженной страницы и расширением для браузера prihod Events/DOM/Window 6 11.12.2011 21:51
JS для смены картинок IceMann Общие вопросы Javascript 14 15.12.2010 13:13
изменение стиля для тега используя JS dimiork Элементы интерфейса 2 13.12.2010 10:47