¿Cuál es la diferencia entre estas dos formas de crear un elemento?
Frecuentes
Visto 107 veces
3
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?
7 Respuestas
9
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
2
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
0
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
0
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
0
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
0
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:
- crea el elemento de tipo "div": document.createElement('div')
- establezca la propiedad del elemento "id" en "myDiv" y
- 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
0
// 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 javascript or haz tu propia pregunta.
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. Entoncesvar a = document.createElement('div').id = "myDiv";
crea un elemento, establece suid
, devuelve la cadena"myDiv"
para el almacenamiento en ela
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