Hola: Tengo una duda. Porque si en el minuto 13:38, aparecen 3 etiquetas de Hola mundo!!, en el minuto 13:42, no aparecen 3 veces: hola M...

Roberto Medina

Roberto Medina

Pregunta
studenthace 4 años

Hola:

Tengo una duda.

Porque si en el minuto 13:38, aparecen 3 etiquetas de Hola mundo!!, en el minuto 13:42, no aparecen 3 veces:

hola Mundo!!

Hola mundo 2!

texto ejemplo para la case!

hola Mundo!!

Hola mundo 2!

texto ejemplo para la case!

hola Mundo!!

Hola mundo 2!

texto ejemplo para la case!

Saludos 😃

5 respuestas
para escribir tu comentario
    Daniel Castro Alejos

    Daniel Castro Alejos

    studenthace 3 años

    appendChild, hace que al nodo que indicamos pase al último.

    Hernán Andrés Hernández Alemán

    Hernán Andrés Hernández Alemán

    studenthace 4 años

    no se exactamente por que ocurre esto pero creo por que esta definido como una constante fuera de la clase cambie mi codigo de la siguente forma HTML

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>custom elements</title> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" /> </head> <body> <my-element></my-element> <my-element></my-element> <my-element></my-element> <script type="module" src="./my-element.js"></script> </body> </html>

    JS

    class myElement extends HTMLElement { constructor() { super(); this.p = document.createElement("p"); this.template = document.createElement("div"); } connectedCallback() { this.p.textContent = "hola mundo"; this.template.innerHTML = ` <p>hola mundo 2!!</p> `; this.appendChild(this.p); this.appendChild(this.template); } } customElements.define("my-element", myElement);

    esta fue la salida custom-element.png

    Diego Alvaro Parra Abad

    Diego Alvaro Parra Abad

    studenthace 4 años

    Conforme con tu duda, debería figurar el resultado que estás compartiendo, tengo entendido que debería replicarse.

    Kevin Jiménez Osorno

    Kevin Jiménez Osorno

    studenthace 4 años

    De acuerdo a la documentación de appendChild. El hijo(template) hace referencia a un nodo que ya existe en el DOM (my-element), asi que lo quita el padre actual y lo pasa al ultimo.

    <my-element></my-element> /* 1) Aqui se cargaria el template*/ <my-element></my-element> /* 2) El appendChild ve que existe un nuevo nodo padre con el mismo nombre asi que pasa el template a este nuevo nodo */

    Pueden consultar la documentación de appendChild en: https://developer.mozilla.org/es/docs/Web/API/Node/appendChild

    Jimmy Buriticá Londoño

    Jimmy Buriticá Londoño

    studenthace 4 años

    El profesor borró dos etiquetas <my-element>, al dejar una sola, como se ve en el siguiente código fuente, entonces solo va a mostrar un Hola Mundo !!!

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Custom Elements</title> </head> <body> <my-element></my-element> <script type="module" src="./my-element.js"></script> </body> </html>
Curso Básico de Web Components con JavaScript

Curso Básico de Web Components con JavaScript

Crea una tarjeta de producto para un e-commerce usando JavaScript y Web Components. Haz que sea responsive, dinámica y modificable desde atributos externos. Gana habilidades esenciales para simplificar el desarrollo web con tecnologías estándar.

Curso Básico de Web Components con JavaScript
Curso Básico de Web Components con JavaScript

Curso Básico de Web Components con JavaScript

Crea una tarjeta de producto para un e-commerce usando JavaScript y Web Components. Haz que sea responsive, dinámica y modificable desde atributos externos. Gana habilidades esenciales para simplificar el desarrollo web con tecnologías estándar.