Reputation: 15073
In javascript, we can create a new DOM element in the following ways...
By using the createAttribute() + setAttributeNode() dom methods:
var input = document.createElement("input"),
type = document.createAttribute("type");
type.nodeValue = "text";
input.setAttributeNode(type);
container.appendChild(input);
or by just setting the attributes directly:
var input = document.createElement("input");
input.type = "text";
container.appendChild(input);
The latter can end up being quite lot less code, even when there are only a couple attributes per element.
The question: has anyone run across any drawbacks of the latter method (setting attributes directly)?
I tested this on several browsers (the latest FF, IE, Safari, Opera, old IEs - even IE6 worked) and on a basic test (inserting a text input with type, name, and maxLength attributes) they all passed. Here's the fiddle if anybody needs it.
Upvotes: 9
Views: 11141
Reputation:
document.createAttribute
document.createAttributeNS
element.getAttributeNode
element.getAttributeNodeNS
... and a lot of others
will be deprecated in DOM4, so don't use it, just set with setAttribute("name","value")
http://www.w3.org/TR/dom/#element
someinput.type is different basically is a shortcut for doing
setAttribute("type","text");
getAttribute("text");
hope this helps!
element._some_attribute_ is not available for all attributes, just some:
element.dir
element.lang
element.id
...etc
Upvotes: 14
Reputation: 179036
Apparantly IE 5.5 has issues with using the attribute name (i.e. node[attributeName]
). Quirksmode has this well documented.
Upvotes: 3