|
DOM vs. innerHTML
Всем добрый день/вечер/ночь/утро.
Возник такой вопрос: как лучше добавлять элемены? Через createElement или innerHTML? Например, у меня есть некая моя мини-библиотека, в ней я создаю элементы так: var div = mk.create('div', {className: 'myClass', tite: 'test'}, {margin: '10px'}); var img = mk.create('img', {alt: '', src: 'test.png'}); div.appendChild(img); mk('body').appendChild(div); innerHTML: document.body.innerHTML = '<div class="myClass" title="test" style="margin:10px"><img alt="" src="test.png"></div>'; Что лучше использовать? Есть ли какие-нибудь подводные камни у каждого из способов? |
Че удобней, то и юзай. Ибо результат-то одинаковый :)
|
danik.js, ну говорят, что innerHTML быстрее, однако в IE могут возникать баги и утечки памяти. :)
|
Цитата:
хотя в оном есть особенности, например п.4 http://innerhtml.ru/ , или, к примеру, опшены в селект не вставляются. события однозначно удобнее через дом вешать. а по скорости - да, innerHTML бывает быстрее, но тут тестить надо. |
Цитата:
А ты сам-то тестил? Поищи готовые тесты на jsperf. В хроме вообще-то уже давно innerHTML работает медленней. Возможно и файрфокс подтянулся. |
Цитата:
|
Чтобы не создавать новой темы, тут же спрошу:
... mk.prototype.props = function(props) { for(var i in props) this[i] = props[i]; return this; } mk.prototype.styles = function(styles) { for(var i in styles) this.style[i] = styles[i]; return this; } ... mk.create = function(tagName, props, styles) { var elem = document.createElement(tagName); return mk(elem).props(props).styles(styles); } /*Не работает в IE (тестил в IE11)*/ var fr = mk.create('iframe', {scrolling: 'no', src: 'test.php'}); document.body.appendChild(fr); Почему не работает в IE? Другие элементы работают, а вот iframe - нет. В других браузерах всё нормально. А вот так работает: var fr = document.createElement('iframe'); fr.scrolling = 'no'; fr.src = 'test.php'; document.body.appendChild(fr); |
Цитата:
|
Цитата:
http://javascript.ru/ajax/transport/...sozdaem-iframe "Создать ифрейм - так же просто, как и любой другой элемент. Пожалуй, единственная подстава - в IE свойство name должно обязательно задаваться при создании элемента. Т.е, нельзя сначала сделать iframe, а потом присвоить ему name" |
Цитата:
|
Часовой пояс GMT +3, время: 16:05. |
|