Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

112
Visualizações
Parece que no puedo hacer que un bucle while funcione con mi código

Cuando coloco el bucle while de esta manera, mi fondo y mis avisos nunca aparecen. No tengo ni idea de por qué estaría causando esto. Todo lo demás funciona a la perfección, solo una vez que agrego el ciclo while mi código se rompe. También probé un bucle for pero tampoco funciona.

 //score var score = 0 //replay loop var replay = "yes" //name of each gen 1 pokemon var pname = ['#'] //images for each one var bg = ['#'] while (replay == 'yes'){ background = bg[num = Math.floor(Math.random() * bg.length)]; document.body.style.backgroundImage = 'url(' + background + ')'; setTimeout(() => { var answer = prompt("What pokemon is this?") if (answer.toLowerCase() == pname[num].toLowerCase()) { alert("correct") score ++ replay = prompt("Want to keep playing?") } else { alert("incorrect") replay = prompt("Want to keep playing?") } }, 2000); }

https://jsfiddle.net/e6cbt2dz/

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

La función setTimeout tardará 2 segundos antes de ejecutarse, lo que hará que su ciclo while se ejecute una gran cantidad de veces en 2 segundos... todo el tiempo actualizando la imagen de fondo (que probablemente lo hace fácilmente más de 10,000 X en 2 segundos .

Sugiero usar recursividad:

 //score var score = 0; //replay loop var replay = "yes"; //name of each gen 1 pokemon // var pname = [#]; <- this needs to hold all the available names //images for each one //var bg = [#]; <-this needs to hold all the available images let keepPlaying = function(){ background = bg[Math.floor(Math.random() * bg.length)]; document.body.style.backgroundImage = 'url(' + background + ')'; var answer = prompt("What pokemon is this?") if (answer.toLowerCase == pname[num].toLowerCase) { alert("correct") score ++ replay = prompt("Want to keep playing?") } else { alert("incorrect") replay = prompt("Want to keep playing?") } if(replay == 'yes') keepPlaying() else return(score) }()
about 4 years ago · Juan Pablo Isaza Relatório

0

El bucle while no esperará a que se complete setTimeout(). Necesita encontrar una forma diferente.

Estas dos líneas no son válidas.

 var pname = [#] // var pname = ['#'] var bg = [#], // var bg = ['#'] 

 var score = 0 var replay = "yes" var pname = ['#'] var bg = ['#'] var index = 0; (function asyncLoop() { background = bg[num = Math.floor(Math.random() * bg.length)]; document.body.style.backgroundImage = 'url(' + background + ')'; setTimeout(function() { var answer = prompt("What pokemon is this?") if (answer == pname[num]) { alert("correct") score ++ replay = prompt("Want to keep playing?") } else { alert("incorrect") replay = prompt("Want to keep playing?") } if (replay == 'yes'){ asyncLoop(); } }, 1000); })();
 <body></body>

about 4 years ago · Juan Pablo Isaza Relatório

0

Permítanme señalar algunas cosas en el código primero.

var pname = [#] --> no es una sintaxis válida

var bg = [#], --> no es válido y tiene una coma aquí

Además, la función setTimeOut se ejecuta muchas veces, por lo que el script no responde.

Prueba esto:

  • He excluido la sección de la imagen del código, que puedes agregar más tarde y probar.

 var pname = ['qq','ww','ee']; var replay = "yes"; var score = 0; var bg = []; var num = 1; keepPlaying(); function keepPlaying() { var answer = prompt("What pokemon is this?") if (answer == pname[num]) { alert("correct") score ++ replay = prompt("Want to keep playing?") } else { alert("incorrect") replay = prompt("Want to keep playing?") } if(replay == 'yes') { keepPlaying(); } else { alert(score); } }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda