Использование 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")
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 это хорошо документировано.