¿Cuál es la diferencia entre estas dos formas de crear un elemento?

var a = document.createElement('div');

a.id = "myDiv";

y

var a = document.createElement('div').id = "myDiv";

¿Cuál es la diferencia entre ellos para que el primero funcione y el segundo no?

preguntado el 12 de junio de 12 a las 16:06

7 Respuestas

Configurando el id del elemento no retorno el elemento. Vuelve "myDiv" en realidad, por lo que la var a se está preparando para "myDiv" en lugar del propio div.

Respondido el 12 de junio de 12 a las 16:06

Pero .createElement(); devuelve un elemento, ¿por qué no debería poder manipularlo desde allí? - 0x499602D2

@David: Porque ya lo tienes. Te has referido a su .id propiedad. Entonces var a = document.createElement('div').id = "myDiv"; crea un elemento, establece su id, devuelve la cadena "myDiv" para el almacenamiento en el a e inmediatamente hace que ese elemento esté disponible para la recolección de basura porque nada tiene una referencia pendiente. Como no tiene una referencia, no puede hacer nada más ni usarlo para nada. - TJ Crowder

El segundo no funciona porque el valor de "retorno" de createElement se usa para establecer la identificación. Como se trata de una asignación y no de un encadenamiento, no devuelve la referencia al nuevo elemento a "a" y, por lo tanto, falla.

Respondido el 12 de junio de 12 a las 16:06

El segundo no funciona ya que está creando un elemento, pero inmediatamente realiza una operación sobre él. El a la variable se establece en la cadena "myDiv" en su lugar.

Respondido el 12 de junio de 12 a las 16:06

foo = 'bar' como declaración en realidad devuelve un valor, que es 'bar'.

a = document.createElement('div'); //this sets `a` to DOM Node

a = document.createElement('div').id = 'myDiv'; //this sets `a` to 'myDiv'
//it's the same as
document.createElement('div').id = 'myDiv';
a = 'myDiv';

Nunca hagas esto

Si desea establecer tanto el ID como el a variable en una línea, podría usar paréntesis:

(a = document.createElement('div')).id = 'myDiv';

Eso es porque a = document.createElement('div') devuelve el nodo DOM recién creado.

Respondido el 12 de junio de 12 a las 16:06

Si realmente quieres un camino corto, puedes escribir:

(window.a=document.createElement('div')).id="myDiv";

Violín : http://jsfiddle.net/F23cD/

Respondido el 12 de junio de 12 a las 16:06

Pero entonces a es una variable global, y el código es mucho menos legible. Sugeriría simplemente tener la declaración en dos líneas; más correcto y más legible. - Jason Hall

En la primera declaración, coloca el elemento creado de tipo "div" en la variable "a", y luego establece la propiedad del elemento "id" de "a" en "myDiv". Entonces "a" es ahora el elemento.

En la segunda declaración usted:

  1. crea el elemento de tipo "div": document.createElement('div')
  2. establezca la propiedad del elemento "id" en "myDiv" y
  3. establezca "a" en "myDiv" también

Entonces, "a" ahora es "myDiv" y no el elemento.

Respondido el 12 de junio de 12 a las 16:06

// utilizar este

a.setAttribute("id","myDiv");

Respondido el 18 de junio de 18 a las 20:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.