igor-fedorov
@igor-fedorov
Full Stack разработчик

Как более эффективно работать с dom javascript?

Добрый день. Интересует следующий вопрос. Что более эффективно и правильно в плане производительности?

Создавать элементы таким способом:

var newLi = document.createElement('li');
newLi.className = "alert";
newLi.innerHTML = "<strong>Ура!</strong> Вы прочитали это важное сообщение.";

list.appendChild(newLi);


Или таким:

var newLi = `<li class="alert"><strong>Ура!</strong> Вы прочитали это важное сообщение.</li>`
list.innerHTML = newLi;
  • Вопрос задан
  • 383 просмотра
Пригласить эксперта
Ответы на вопрос 4
Имхо экономия на спичках. Чтобы эффективнее работать с DOM, используйте Vritual DOM.
Ответ написан
nazares
@nazares
Software Engineer
самое производительное это element.innerHTML + Join

var html = [];
for (var i = 1; i < = 1000; i++) {
  html.push('<li>Element ');
  html.push(i);
  html.push('');
}
el.innerHTML = html.join('');
Ответ написан
abyrkov
@abyrkov
JavaScripter
Самым быстрым вообще будет appendChild)

К тому же, злом это не считается. Злом считается:
innerHTML +=...
Проход по всему DOM'у
1000+ DOM-элементов
Не сохранение элементов в переменные, а каждый раз получения их из DOM'а
Ответ написан
Комментировать
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Если родитель пустой, то innerHTML самое быстрое
Если в нем что-то уже есть, то вставка через documentFragment
var frag = document.createDocumentFragment();
for(let i = 0; i < 10; i++) {
  let newLi = document.createElement('li');
  newLi.className = "alert";
  newLi.innerHTML = "<strong>Ура!</strong> Вы прочитали это важное сообщение.";
  frag.appendChild(newLi);
}
list.appendChild(frag);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы