То, что кажется простым, на самом деле сложно, если вы хотите быть полностью совместимым.
<code>var e = document.createElement('div');
Допустим, у вас есть id 'div1' для добавления.
<code>e['id'] = 'div1';
e.id = 'div1';
e.attributes['id'] = 'div1';
e.createAttribute('id','div1')
Все они будут работать, кроме последнего в IE 5.5 (который на данный момент является древней историей, но все еще является XP по умолчанию без обновлений).
Но есть непредвиденные обстоятельства, конечно.
Не будет работать в IE до 8: e.attributes['style']
Не выдаст ошибку, но не установит класс, это должно быть имя_класса: e['class']
.
Однако, если вы используете атрибуты, это БУДЕТ работать: e.attributes['class']
Итак, думайте об атрибутах как о литеральных и объектно-ориентированных.
В буквальном смысле вы просто хотите, чтобы он выплевывал x = 'y' и не думал об этом. Это то, для чего предназначены атрибуты setAttribute, createAttribute (кроме исключений стиля IE). Но поскольку это действительно объекты, вещи могут запутаться.
Поскольку вы столкнетесь с проблемой правильного создания DOM-элемента вместо jQuery innerHTML slop, я бы отнесся к нему как к одному и придерживался бы e.className = 'fooClass' и e.id = 'fooID'. Это предпочтение дизайна, но в данном случае попытка лечения заключается в том, что все, кроме объекта, работает против вас.
Он никогда не будет иметь негативных последствий для вас, как другие методы, просто помните, что class_name - это className, а style - это объект, поэтому это style.width, а не style = "width: 50px". Также запомните tagName, но это уже установлено createElement, так что вам не нужно беспокоиться об этом.
Это было дольше, чем я хотел, но манипуляции с CSS в JS - дело сложное.