Entendiendo el DOM

1

Manipulación del DOM con JavaScript y APIs

2

Entendiendo el DOM y su Manipulación con JavaScript

3

Diferencias entre el DOM y el objeto Window en JavaScript

Seleccionando y Accesando a Elementos del DOM

4

Selección de Elementos del DOM con JavaScript

5

Navegación Jerárquica del DOM en JavaScript

Manipulando Elementos del DOM

6

Atributos y Propiedades en HTML y su Manipulación con JavaScript

7

Modificar texto en HTML con JavaScript

8

Modificar Estilos CSS con JavaScript: Propiedad Style y ClassName

9

Uso de classList para Manipular Clases en Elementos HTML

10

Manipulación del DOM con innerHTML e InsertAdjacentHTML

11

Agregar elementos HTML sin reemplazar contenido existente

12

Creación y Manipulación de Elementos DOM con createElement

13

Eliminar Elementos del DOM con JavaScript: Métodos y Ejemplos

14

Clonación y Reemplazo de Elementos en JavaScript

Manipulando Eventos en el DOM

15

Eventos y Flujo en Programación Web: Capturing y Bubbling

16

Manejo de Eventos en JavaScript: click, mouseOver y mouseOut

17

Manipulación de Eventos en JavaScript para Interacción de Elementos

18

Validación de Formularios con JavaScript: Prevenir Comportamiento por Defecto

19

Delegation Pattern en JavaScript: Mejora de Eventos Click en Listas

Creando un Administrador de Tareas

20

Creación de un Task Manager con Persistencia usando Local Storage

21

Interactividad en Botones de Tareas: Borrar y Editar en JavaScript

22

Persistencia de Datos con Local Storage en Tareas Web

23

Guardado y edición de tareas en local storage con JavaScript

24

Manejo de Errores en Local Storage para Tareas Dinámicas

25

Cambio de Tema Dinámico y Persistente en Aplicaciones Web

26

Creación de Páginas Web Dinámicas con JavaScript

Asincronía en JavaScript

27

Programación Síncrona y Asíncrona en JavaScript

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Clonación y Reemplazo de Elementos en JavaScript

14/27
Recursos

¿Cómo clonar y reemplazar elementos en JavaScript?

Al manipular el DOM con JavaScript, saber cómo clonar y reemplazar elementos puede ser crucial para crear aplicaciones web dinámicas y personalizadas. Estos procesos no solo permiten la reutilización de elementos, sino que también optimizan el rendimiento al evitar la creación de nuevos nodos cada vez.

¿Cómo clonar un elemento?

Para clonar un elemento en JavaScript, utilizamos el método cloneNode. Este método permite duplicar un nodo existente, manteniendo su estructura y contenido. Aquí te explico cómo:

  1. Seleccionar el elemento a clonar: Primero, identifícamos el elemento HTML a clonar usando un querySelector.

    const contentArea = document.querySelector('#contentArea');
    const originalP = contentArea.querySelector('p');
    
  2. Clonar el nodo: Una vez seleccionado, empleamos el método cloneNode con el parámetro true para garantizar que clone el nodo junto con sus elementos hijos.

    const clonParagraph = originalP.cloneNode(true);
    
  3. Insertar el nodo clonado: Finalmente, el nodo clonado se inserta en el DOM usando append.

    contentArea.append(clonParagraph);
    
  4. Modificar el nodo clonado: Una vez clonado e insertado, se puede modificar el contenido del nodo.

    clonParagraph.textContent = 'Este es su nuevo texto';
    

¿Cómo reemplazar un elemento?

Reemplazar un elemento en una página web es posible con replaceWith, que cambia un nodo existente por otro sin necesidad de crear un nuevo nodo cada vez. Los pasos son los siguientes:

  1. Seleccionar los elementos: Seleccionamos el contenedor y, dentro de él, el elemento que deseamos reemplazar.

    const list = document.querySelector('#listArea');
    const itemToReplace = list.children[2]; // Seleccionando el tercer elemento de la lista.
    
  2. Reemplazar el elemento: Utilizamos replaceWith para sustituir el elemento seleccionado por otro, en este caso, el párrafo clonado.

    itemToReplace.replaceWith(clonParagraph);
    

Al seguir estos pasos, puedes ver cómo el tercer elemento de una lista es reemplazado por el párrafo previamente clonado, demostrando así la eficacia del método replaceWith.

¿Por qué es útil clonar y reemplazar nodos?

  • Eficiencia en el desarrollo: Permiten reutilizar elementos sin tener que escribir código redundante.
  • Optimización de recursos: Al manipular directamente el DOM, se evita la sobrecarga de rendimiendo de crear nuevos nodos desde cero.
  • Flexibilidad: Facilita el manejo dinámico del contenido, permitiendo actualizaciones de la interfaz en tiempo real.

Estos métodos son esenciales para cualquier desarrollador web que busque crear aplicaciones interactivas y dinámicas con eficiencia y efectividad. ¡No dudes en ponerlo en práctica y ver cómo mejora la manipulación de tu DOM!

Aportes 14

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Me entró curiosidad de por qué .cloneNode( ) necesitaba el parámetro 'true', quiero decir, ¿y si escribo 'false'? ¿Entonces no se clona? Raro. Pero no, lo que ocurre si el parámetro es 'false' es que no te copia a los hijos del nodo. En la documentación lo llaman "profundidad" (deep) porque es un parámetro que hace referencia a eso, hasta dónde, hasta qué capa llega la clonación. <https://developer.mozilla.org/en-US/docs/Web/API/Node/cloneNode> También avisan que se tenga cuidado porque también se clona el 'id' y el 'id' debe ser único.
Cuando se crea un ID en HTML de forma automática se guarda un espacio en memoria con ese nombre en JS (siempre y cuando el id no este separado con guiones). Pueden probarlo directamente en consola escribiendo el ID del elemento y les mostrará ese elemento. Por lo que es el caso de contentArea y listArea no haría falta seleccionarlos con querySelector. Podemos hacer directamente: const originalP = contentArea.querySelector("p"); \*En este caso se ve igual porque la variable es igual al ID utilizado en HTML. Pero se ahorran hacer el primer querySelector al contenedor #contentArea y #listArea para el ejemplo de replaceWith();
Sigan estudiando, no paren de aprender // Seleccionamos el área de contenido y el primer \

dentro de élconst contentArea = document.querySelector(`#contentArea`);const originalP = contentArea.querySelector(`p`); // Clonamos el párrafo original con cloneNode(true) para copiar el nodo y todos sus hijos// El parámetro 'true' significa que se clonan también los nodos hijos (profundidad)const clonedP = originalP.cloneNode(true); // Agregamos el párrafo clonado al final del área de contenidocontentArea.append(clonedP); // Modificamos el texto del párrafo clonadoclonedP.textContent = `podemos reemplazar el texto`; // Seleccionamos la lista y el tercer \

  • dentro de ella (índice 2)const listArea = document.getElementById(`listArea`);const itemToReplace = listArea.children\[2];  // Tercer \
  • en la lista // Reemplazamos el tercer \
  • con el párrafo clonado// 'replaceWith()' elimina el nodo seleccionado (itemToReplace) y lo sustituye por el nuevo nodo (clonedP)// Este método es útil para cambiar un elemento existente por otro sin necesidad de buscar su padreitemToReplace.replaceWith(clonedP);  // El \
  • es reemplazado por el nuevo \

    ```js // Seleccionamos el área de contenido y el primer

    dentro de él const contentArea = document.querySelector(`#contentArea`); const originalP = contentArea.querySelector(`p`); // Clonamos el párrafo original con cloneNode(true) para copiar el nodo y todos sus hijos // El parámetro 'true' significa que se clonan también los nodos hijos (profundidad) const clonedP = originalP.cloneNode(true); // Agregamos el párrafo clonado al final del área de contenido contentArea.append(clonedP); // Modificamos el texto del párrafo clonado clonedP.textContent = `podemos reemplazar el texto`; // Seleccionamos la lista y el tercer

  • dentro de ella (índice 2) const listArea = document.getElementById(`listArea`); const itemToReplace = listArea.children[2]; // Tercer
  • en la lista // Reemplazamos el tercer
  • con el párrafo clonado // 'replaceWith()' elimina el nodo seleccionado (itemToReplace) y lo sustituye por el nuevo nodo (clonedP) // Este método es útil para cambiar un elemento existente por otro sin necesidad de buscar su padre itemToReplace.replaceWith(clonedP); // El
  • es reemplazado por el nuevo

    ```

  • Con querySelector podemos seleccionar el parrafo dentro del contentArea de la siguiente manera: ```js document.querySelector("#contentArea > p") ``` Funciona de la misma manera que los selectores de css
    A mi no me mueve el nodo completo alguien me puede recomendar alguna guía por favor
    En este video hay un pequeño error, y es que en el minuto 11:00 pone listArea cuando deberia ser la variable list
    Amigos, dejo mi pequeño aporte por si les sirva de utilidad ![](https://static.platzi.com/media/user_upload/upload-f48f2c06-4d6a-4e53-88e1-72569636538d.png)
    `cloneNode` es un método en JavaScript que permite crear una copia de un nodo del DOM. Este método toma un argumento booleano: si es `true`, se clonan también los nodos hijos del nodo original; si es `false`, solo se clona el nodo en sí sin sus hijos. Este método es útil para duplicar elementos en la página de manera eficiente y luego manipulándolos según sea necesario. Por ejemplo, si tienes un párrafo y deseas crear una copia de él, usarías `originalNode.cloneNode(true)` para clonar tanto el nodo como cualquier contenido que contenga.
    ![](https://static.platzi.com/media/user_upload/imagen-ca3c9cf0-3e83-4246-b3f9-267358ad9661.jpg)
    Me parece hay un pequeño error al momento de seleccionar el contenedor para crear la constante "itemtoReplace", se selecciona "listArea", cuando se supone se había creado "list" a eso fines. Yo que soy nuevo en esto, llegué a pensar que se podía usar el listArea, que es el nombre del ID de la lista, para seleccionarla. Haciendo la práctica fue que me di cuenta que allí va es "list" que fue justo la constante que se creo el paso anterior para seleccionar el contenedor.
    claro hay que tener en cuenta que como es un clon pues si cambias el párrafo original pues también cambia el clonado
    ![](https://static.platzi.com/media/user_upload/image-a9133b9c-c66a-43ad-bc06-f8203353c816.jpg)
    cloneNode(): Clona el nodo seleccionado. Si se pasa ‘true’ como parámetro, realiza una clonación profunda, copiando todos los elementos y nodos hijos del nodo original. Si se usa ‘false’, solo se clona el nodo sin sus hijos.
    Algo que me llama demasiado la curiosidad es que en un proyecto que hce de manejo de APIS con Js en el curso de MovieDB, a un nodo yo le aplique un addEventListener de scroll o no me acuerdo que tipo era, pero la cuestion es que si elimino ese nodo del DOM sigue estando el evento, me gustaria saber porque sucede eso, si yo lo habia removido, es muy extraño la verdad.