Return to Video

Creando elementos desde cero (Versión en Video)

  • 0:01 - 0:07
    Ok, hasta ahora hemos estado modificando
    una gran cantidad de elementos existentes en la página.
  • 0:07 - 0:10
    ¿Pero qué pasa si queremos añadir nuevos elementos a la página?
  • 0:10 - 0:15
    ¿Podríamos hacer eso con "innerHTML", escribiendo HTML para las etiquetas
  • 0:15 - 0:19
    que están dentro de las cadenas de caracteres que le pasamos a "innerHTML", como lo hicimos aquí?
  • 0:19 - 0:22
    Eso podría ser un poco complicado, especialmente si quieres crear
  • 0:22 - 0:26
    muchas etiquetas con atributos, estilos y clases diferentes.
  • 0:26 - 0:31
    Así que en su lugar, podemos usar toda una serie de métodos de "document"
  • 0:31 - 0:35
    para crear nuevos elementos y añadirlos a la página.
  • 0:35 - 0:41
    Digamos que queremos añadir a la página una imagen de un gato,
  • 0:41 - 0:44
    porque pensamos que no tiene suficientes imágenes todavía.
  • 0:44 - 0:49
    El primer paso es crear ese elemente nuevo "", ¿cierto?
  • 0:49 - 0:51
    Queremos crear eso.
  • 0:51 - 0:56
    Así que empezamos por crear una variable para almacenarlo: "catEl".
  • 0:56 - 1:01
    Y luego vamos a usar "document.createElement",
  • 1:01 - 1:07
    y a pasar "img" en el nombre de la etiqueta que estamos haciendo.
  • 1:07 - 1:12
    Así que ahora te puedes imaginar que el navegador ha creado una etiqueta de imagen, como ésta,
  • 1:12 - 1:15
    y que está flotando en algún lugar del espacio.
  • 1:15 - 1:19
    El siguiente paso es asignarle una fuente, un origen.
  • 1:19 - 1:23
    Entonces... "catEl.src =",
  • 1:23 - 1:28
    y vamos a agarrar nuestra fuente de aquí arriba,
  • 1:29 - 1:35
    y, bueno deberíamos añadir un "alt", para hacer esta imagen más accesible,
  • 1:35 - 1:42
    no he estado haciendo eso, y en realidad nuestras imágenes siempre deberían tener etiquetas "alt".
  • 1:42 - 1:47
    Así que ahora puedes imaginar que esta etiqueta "" que hicimos
  • 1:47 - 1:58
    tiene un "src" y también un "alt", que es "Photo of cute cat" (Foto de un gato lindo).
  • 1:58 - 2:05
    Ok, esto es lo que hicimos usando el código de JavaScript que está aquí.
  • 2:05 - 2:09
    La etiqueta "" que hicimos sigue flotando en el espacio,
  • 2:09 - 2:12
    porque no le hemos dicho al navegador dónde ponerla.
  • 2:12 - 2:16
    Y hay tantos lugares en nuestro DOM en donde podríamos ponerla.
  • 2:16 - 2:21
    Vamos a hacer lo más fácil, que es ponerla al final de la página.
  • 2:21 - 2:26
    Podemos hacer eso pegándola al final de la etiqueta "", así que escribimos:
  • 2:26 - 2:30
    "document.body.appendChild(catEl);"
  • 2:30 - 2:31
    ¡Ajá! ¡Aquí está!
  • 2:31 - 2:33
    Es muy grande.
  • 2:33 - 2:35
    Es un gato tan grande que da miedo.
  • 2:35 - 2:41
    Ahora, puedes llamar a "appendChild" en cualquier nodo existente del DOM de tu página,
  • 2:41 - 2:47
    y va a hacer que este elemento que pasamos sea el hijo final del nodo.
  • 2:47 - 2:52
    Aquí es donde ayuda mucho visualizar el DOM como un árbol.
  • 2:52 - 2:58
    La etiqueta "" es un nodo en ese árbol, y tiene muchos hijos,
  • 2:58 - 3:00
    como "" y "",
  • 3:00 - 3:04
    y estás añadiendo un hijo más al final de todos sus hijos.
  • 3:04 - 3:09
    Así que en realidad, éste va a estar al final de la etiqueta "", justo aquí.
  • 3:09 - 3:13
    Usando los métodos del DOM, teóricamente podrías añadir elementos
  • 3:13 - 3:16
    en cualquier parte dentro del árbol DOM.
  • 3:16 - 3:19
    Acabamos de ponerlo en el lugar más fácil, en el lugar más obvio.
  • 3:19 - 3:22
    Ok, vamos a hacer un ejemplo más.
  • 3:22 - 3:28
    Usamos "innerHTML" aquí abajo, para poner etiquetas "" dentro de etiquetas "".
  • 3:28 - 3:31
    En lugar de eso podríamos usar "createElement".
  • 3:31 - 3:40
    'var strongEl = document.creatElement("strong");'
  • 3:40 - 3:44
    Lo escribí mal, y escribirlo bien es muy importante.
  • 3:44 - 3:49
    Entonces esto crea una etiqueta "" vacía, que está flotando en el espacio.
  • 3:49 - 3:52
    Y la primera cosa que haremos es escribir un texto para esa etiqueta,
  • 3:52 - 3:57
    así que 'strongEl.textContent = "cat";'.
  • 3:57 - 3:58
    ¿Está bien?
  • 3:58 - 4:02
    Alternativamente, en realidad podríamos hacer esta otra cosa donde
  • 4:02 - 4:05
    creamos un "textNode".
  • 4:05 - 4:09
    Muchos nodos del DOM, en el árbol DOM, pueden tener tipos especiales de nodos, nodos de texto "textNode´s",
  • 4:09 - 4:11
    como hijos.
  • 4:11 - 4:15
    Y esos nodos no son elementos, pero siguen siendo nodos del árbol DOM.
  • 4:15 - 4:18
    En realidad podemos llamar a esos nodos "nodos de hojas", porque son
  • 4:18 - 4:20
    lo último de un árbol.
  • 4:20 - 4:27
    Entonces, "var strongText = document.createTextNode(..."
  • 4:27 - 4:32
    Y le pasamos el texto: "cat".
  • 4:32 - 4:34
    Si usamos esta técnica, ahora hemos creado
  • 4:34 - 4:42
    dos nodos que están flotando en el espacio: una etiqueta "",
  • 4:42 - 4:47
    y este "textNode", que contiene la palabra "cat".
  • 4:47 - 4:50
    Y necesitamos conectarlos.
  • 4:50 - 4:55
    Y queremos que "" sea el padre de "cat".
  • 4:55 - 5:03
    Así que lo que vamos a hacer es escribir: "strongEl.appendChild(strongText);".
  • 5:03 - 5:12
    Ok, ahora tenemos la etiqueta "" con el texto "cat" dentro de ella,
  • 5:12 - 5:19
    y tenemos que ponerla donde queramos, porque sigue flotando en el espacio.
  • 5:19 - 5:25
    Estamos dentro del ciclo "for" modificando "nameEls" y es en cada "nameEl"
  • 5:25 - 5:27
    donde queremos poner la etiqueta "".
  • 5:27 - 5:35
    Aquí, "nameEls[i].appendChild(strongEl);".
  • 5:35 - 5:42
    ¡Ajá!, ahora vemos que está dos veces, porque le dejé la forma anterior.
  • 5:42 - 5:47
    Así que la está añadiendo a una etiqueta "" que ya tiene una etiqueta "".
  • 5:47 - 5:52
    Podríamos cambiar esta línea e igualar "innerHTML" a una cadena de caracteres vacía,
  • 5:52 - 5:58
    lo que efectivamente limpiará la etiqueta "" antes de añadirle la otra.
  • 5:58 - 6:05
    Ahora, como has visto, hacer esto me tomó muchas más líneas de código que la versión "innerHTML".
  • 6:05 - 6:07
    Así que ¿por qué lo hicimos así?
  • 6:07 - 6:11
    Bueno, ya sabes, a muchos desarrolladores no les gusta modificar el documento de esta manera
  • 6:11 - 6:13
    porque hay que escribir más código.
  • 6:13 - 6:17
    En realidad la mayoría de los desarrolladores usan librerías como jQuery,
  • 6:17 - 6:21
    para hacer modificaciones al DOM, y esto les provee de funciones que
  • 6:21 - 6:27
    hacen lo mismo con menos líneas de código para ti como desarrollador,
  • 6:27 - 6:29
    porque estás usando funciones de una librería que hace todo eso en tu lugar.
  • 6:29 - 6:33
    A mí me gusta más escribir mi código de esta manera, lo que me gusta es que puedo ver
  • 6:33 - 6:39
    exactamente cómo estoy modificando el árbol DOM, una línea a la vez.
  • 6:39 - 6:43
    Y eso se siente más limpio que meter a empujones todo el código en una cadena de caracteres en el "innerHTML".
  • 6:43 - 6:45
    Pero tal vez a ti no te guste.
  • 6:45 - 6:47
    De cualquier forma, ahora ya sabes que existe.
  • 6:47 - 6:51
    Así que puedes usarlo si lo necesitas, y puedes entender
  • 6:51 - 6:55
    lo que las librerías como jQuery, en realidad hacen tras bambalinas.
Title:
Creando elementos desde cero (Versión en Video)
Description:

more » « less
Video Language:
English
Duration:
06:56

Spanish, Mexican subtitles

Revisions