Autor Tema: JavaScript clonenode removechild, replacechild, insertbefore. Ejercicio CU01141E  (Leído 3255 veces)

Salvadoruve2

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 69
  • Good night Seattle
    • Ver Perfil
Hola en relación al ejercicio propuesto en la entrega CU01141E del curso de programador web Javascript para dummies.

Citar
El siguiente código pretendía duplicar un nodo cada vez que se pulsara sobre él, de modo que inicialmente apareciera en pantalla el mensaje “Pulsa aquí para duplicar este nodo” y que cada vez que se pulsara sobre él, se duplicara (tantas veces como veces se pulsara). El problema es que no funciona, es decir, no obtenemos ningún resultado. Analiza el código y responde estas cuestiones:

1) ¿Por qué no funciona?

Hay varias deficiencias en el código. Primero la propuesta da a  la var nodoHijo = nodoPadre; Y esto es un error y una contradicción que no dejará funcionar el código.

Después hay que escribir una sintaxis por ejemplo, creatElement para poder crear unnuevo nodo.

Otro error es que se asocia nodoPadre con "this" haciendo este último alusión al div con id = nodoRaiz.. y nosotros en realidad queremos alojar el nuevo nodo en el body directaente y no en el div raiz.

Citar
2) Realiza los cambios en el código que nos permitan realizar lo que teníamos previsto creando un nuevo nodo del mismo tipo y con el mismo texto que el deseado y añadiéndolo como último hijo del nodo body.

La primera solución para el ejercicio sin utilizar cloneNode sería la siguiente

Código: [Seleccionar]
<!DOCTYPE html>

<html>
<head>

<title>Curso JavaScript aprenderaprogramar.com</title><meta charset="utf-8">

<style type="text/css">

body {font-family: sans-serif; text-align:center; }

div {border-style:solid;margin: 30px; padding:25px; display:inline-block;}

div div {background-color: yellow;}

</style>

<script type="text/javascript">

function crearNodoHijo() {

var nodoAlpha = document.querySelector('#nodoRaiz');

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

var nodoTexto = document.createTextNode('Pulsa aquí para duplicar este nodo');

nodoHijo.onclick = function() {crearNodoHijo()};

nodoHijo.appendChild(nodoTexto);

document.body.appendChild(nodoHijo);

}

</script>

</head>

<body>

<div id="nodoRaiz" onclick="crearNodoHijo()">Pulsa aquí para duplicar este nodo</div>
</body></html>


Citar
3) Realiza los cambios en el código que nos permitan realizar lo que teníamos previsto clonando el nodo con el método cloneNode y añadiendo el nodo clonado como último hijo del nodo body.

Y más fácil sería utilizando cloneNode por ejemplo:

Código: [Seleccionar]
<!DOCTYPE html>

<html><head> <title>Curso JavaScript aprenderaprogramar.com</title><meta charset="utf-8">

<style type="text/css">

body {font-family: sans-serif; text-align:center; }

div {border-style:solid;margin: 30px; padding:25px; display:inline-block;}

div div {background-color: yellow;}

</style>

<script type="text/javascript">

function crearNodoHijo() {

var nodoAlpha = document.querySelector('#nodoRaiz');

var nodoHijo = nodoAlpha.cloneNode(true);

document.body.appendChild(nodoHijo);

}

</script>

</head>

<body>

<div id="nodoRaiz" onclick="crearNodoHijo()">Pulsa aquí para duplicar este nodo</div>
</body></html>

Hasta aquí mi solución.. si hay alguna mejor de hacerlo me encantaría aprender a resolverlo mejor.
« Última modificación: 19 de Julio 2016, 11:59 por Ogramar »
Dt. Crane psychiatrist

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas Salvador creo que el código del apartado 2) no se ha pegado correctamente, veo que aparece el cierre </head> pero no veo la apertura, posiblemente está incompleto ¿?

Salu2

Salvadoruve2

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 69
  • Good night Seattle
    • Ver Perfil
Hola gracias por la respuesta.

Si está justo al lado de <html>.. no se por qué se habrá copiado así.. en mi editor lo tengo ordenado diferente.

Un saludo!
Dt. Crane psychiatrist

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Revísalo todo y pega el código definitivo para poder ver el definitivo

Salu2

Salvadoruve2

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 69
  • Good night Seattle
    • Ver Perfil
Vale.. entiendo a lo que te referías.. que solo copié a apartir de <style>.. Vale aqui esta el ejercicio completo.

Gracias

Código: [Seleccionar]
<!DOCTYPE html>

<html>
<head>

<title>Curso JavaScript aprenderaprogramar.com</title><meta charset="utf-8">

<style type="text/css">

body {font-family: sans-serif; text-align:center; }

div {border-style:solid;margin: 30px; padding:25px; display:inline-block;}

div div {background-color: yellow;}

</style>

<script type="text/javascript">

function crearNodoHijo() {

var nodoAlpha = document.querySelector('#nodoRaiz');

var nodoHijo = nodoAlpha.cloneNode(true);

document.body.appendChild(nodoHijo);

}

</script>

</head>

<body>

<div id="nodoRaiz" onclick="crearNodoHijo()">Pulsa aquí para duplicar este nodo</div>
</body>

</html>
Dt. Crane psychiatrist

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas sí me refería a que siempre conviene incluir todo el código completo verás que siempre se pide así en los ejercicios de los foros

Veo los ejercicios bien resueltos

Salu2

Salvadoruve2

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 69
  • Good night Seattle
    • Ver Perfil
Si correcto.. se me pasó y no me di cuenta. Gracias
Dt. Crane psychiatrist

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".