| 
	
		
 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, время: 14:14. | 
		
  |