2011-10-06 13 views
7

en JavaScript, podemos crear un nuevo elemento DOM de la siguiente manera ...Usando createAttribute vs. simplemente estableciendo el atributo directamente?

Al utilizar el createAttribute() + setAttributeNode() métodos DOM:

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

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

o por sólo la creación de los atributos directamente :

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

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

Este último puede ser bastante menos código, incluso cuando solo hay un par de atributos por elemento.

La pregunta: ¿Alguien ha encontrado alguna desventaja del último método (establecimiento de atributos directamente)?

Probé esto en varios navegadores (los últimos FF, IE, Safari, Opera, IE antiguos - incluso IE6 funcionó) y en una prueba básica (insertando una entrada de texto con atributos tipo, nombre y maxLength) pasaron todos . Here's the fiddle si alguien lo necesita.

Respuesta

9
document.createAttribute 
document.createAttributeNS 
element.getAttributeNode 
element.getAttributeNodeNS 
... and a lot of others 

quedará obsoleta en DOM4, por lo que no lo use, apenas se fija con setAttribute ("nombre", "valor")

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

someinput.type es diferente básicamente es un atajo para hacer

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

Espero que esto ayude!

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

No es del todo cierto que usar 'setAttribute()' y 'getAttribute()' sea siempre equivalente a usar la propiedad correspondiente. Por ejemplo, la propiedad 'valor' (que siempre refleja el valor actual de una entrada) existe por separado del atributo' valor' (que representa solo el valor inicial). Un ejemplo más obvio es el atributo 'style', que contiene una cadena, frente a la propiedad' style', que es un objeto 'CSSStyleDeclaration' con propiedades individuales para cada propiedad de estilo individual. –

+0

¿dónde dije que siempre son equivalentes? : P –

+0

Punto justo, no lo hiciste. No estoy seguro de qué provocó mi comentario ahora. –

Cuestiones relacionadas