Использование createAttribute или просто установка атрибута напрямую?

В javascript мы можем создать новый элемент DOM следующими способами...

Используя методы dom createAttribute() + setAttributeNode():

var input = document.createElement("input"),
    type = document.createAttribute("type");

type.nodeValue = "text";
input.setAttributeNode(type);
container.appendChild(input);

или просто установив атрибуты напрямую:

var input = document.createElement("input");

input.type = "text";
container.appendChild(input);

Последний может в конечном итоге быть намного меньше кода, даже если есть только пара атрибутов на элемент.

Вопрос: сталкивался ли кто-нибудь с недостатками последнего метода (устанавливая атрибуты напрямую)?

Я проверил это на нескольких браузерах (последние FF, IE, Safari, Opera, старые IE - даже IE6 работал) и на базовом тесте (вставка текстового ввода с атрибутами type, name и maxLength), которые они все прошли. Вот скрипка, если кому-то это нужно.

2 ответа

Решение
document.createAttribute
document.createAttributeNS
element.getAttributeNode
element.getAttributeNodeNS
... and a lot of others

будет устаревшим в DOM4, так что не используйте его, просто установите с помощью setAttribute ("name", "value")

http://www.w3.org/TR/dom/

Someinput.type отличается в основном это ярлык для выполнения

setAttribute("type","text");
getAttribute("text");

надеюсь это поможет!

element._some_attribute_ is not available for all attributes, just some:
element.dir
element.lang
element.id
...etc

Очевидно, что IE 5.5 имеет проблемы с использованием имени атрибута (т.е. node[attributeName]). У Quirksmode это хорошо документировано.

Другие вопросы по тегам