Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

380
Vistas
¿Cómo no tienes imágenes una encima de la otra si son parte de un bucle for?

Estoy haciendo un juego de combinación de caras en el que un lado tiene más que el otro y haces clic en el extra para jugar, pero todas las caras están debajo de una cara en un lado de la pantalla. ¿Me olvidé de colocar el elemento 'cara'? en el navegador dice 'TypeError no capturado: leftSideImages.node is undefined' y '404 not found'

 <body onload="generateFaces()"> <h1> matching game </h1> <p>'Click on the extra smiling face on the left.'</p> <div id="leftSide"></div> <div id="rightSide"></div> <script> let numberOfFaces = 5; const theLeftSide = document.getElementById("leftSide"); const theRightSide = document.getElementById("rightSide"); function generateFaces(){ for(let i = 0; i < numberOfFaces; i++){ const face = document.createElement('img'); face.src = 'image/smile.png'; let randomTop = Math.floor(Math.random( 1 * 400)+1); let randomLeft = Math.floor(Math.random( 1 * 400)+ 1); face.style.top = randomTop; face.style.left = randomLeft; theLeftSide.appendChild(face); } const leftSideImages = theLeftSide.cloneNode(true); leftSideImages.node.removeChild(theLeftSide.theRightSide); leftSideImages.appendChild(theLeftSide.theRightSide(true)); } </script>
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Ya casi llegas, creo que esto es lo que quieres.

Tienes problemas de pareja. El primero es su error JS. Para solucionarlo, modifiqué ligeramente tu código. Primero, divido tu función en dos. generateFacesInDOM se encarga de agregar el dom, mientras que generateFaces dirá dónde y cuánto, en última instancia, confiando en generateFacesInDOM . También moví la llamada de función inicial de la etiqueta del cuerpo a JS, por lo que todo su código JS está en un solo lugar.

Actualicé su número aleatorio para elegir un número aleatorio entre 0 y 100 y luego configuré la parte superior e izquierda como un %. Luego, usando CSS, podemos permitir que se posicionen correctamente.

 let numberOfFaces = 5; var theLeftSide, theRightSide; window.onload = () => { theLeftSide = document.getElementById("leftSide"); theRightSide = document.getElementById("rightSide"); generateFaces(); } function generateFaces() { generateFacesInDOM(theLeftSide, numberOfFaces + 1); generateFacesInDOM(theRightSide, numberOfFaces); } function generateFacesInDOM(parent, faces) { for (let i = 0; i < faces; i++) { const face = document.createElement('img'); face.src = 'image/smile.png'; //random number between 0 and 100 let randomTop = Math.floor(Math.random() * 100); let randomLeft = Math.floor(Math.random() * 100); face.style.top = randomTop + '%'; face.style.left = randomLeft + '%'; parent.appendChild(face); } }
 .board { width: 100%; height: 200px; /*Use the grid to make the elements appear side by side rather than above and below*/ display: grid; grid-template-columns: 50% 50%; } #leftSide, #rightSide { position: relative; } #leftSide img, #rightSide img { position: absolute; }
 <h1>matching game</h1> <p>'Click on the extra smiling face on the left.'</p> <div class="board"> <div id="leftSide"></div> <div id="rightSide"></div> </div>

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda