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

357
Visualizações
Mientras que el bucle no muestra el resultado correcto Javascript

Estoy trabajando en un proyecto para una de mis clases donde necesito usar la entrada de los usuarios para redirigirlos a un sitio web. Requiere que la elección de los usuarios se valide mediante un ciclo, por lo que opté por utilizar un ciclo while para verificar si la entrada de los usuarios difiere de lo que debería ser y, si es así, se le solicita al usuario que vuelva a ingresar su respuesta. . Aquí está el código:

 var websitechoice; websitechoice = parseInt(prompt("Which website would you like to go to? \n 1. google \n 2. gmail \n 3. youtube")) while (websitechoice != 1 || 2 || 3) { alert("you input an incorrect value") websitechoice = parseInt(prompt("Which website would you like to go to? \n 1. google \n 2. gmail \n 3. youtube")) } if (websitechoice = 1) { alert("you chose 1") } else if (websitechoice = 2) { alert("you chose 2") } else { alert("you chose 3") }

Hasta ahora, solo hice una simulación rápida para verificar si funcionaría, pero cada vez que intento ejecutarlo, siempre recibo "ingresó un valor incorrecto", incluso cuando ingresa 1, 2 o 3, y así. Nada de lo que he intentado ha diferido en los resultados. si alguien me puede ayudar se lo agradeceria mucho, gracias

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

0

Está utilizando una definición en la declaración if, en el sentido de que le está diciendo al código que la elección del sitio web ahora es igual a ese número. Deberías usar un comparador así.

 if (websitechoice == 1) { alert("you chose 1") } else if (websitechoice == 2) { alert("you chose 2") } else { alert("you chose 3") }

Para su declaración while, debe cambiarla a una declaración, porque solo desea ejecutar el código cuando no es igual a uno y no es igual a dos y no es igual a tres

 while (websitechoice != 1 && websitechoice != 2 && websitechoice != 3) { alert("you input an incorrect value") websitechoice = parseInt(prompt("Which website would you like to go to? \n 1. google \n 2. gmail \n 3. youtube")) }

También podría simplemente decir, if websitechoice > 3 , entonces realice el proceso de alerta

about 4 years ago · Juan Pablo Isaza Relatório

0

Hay muchas fallas en su código. En primer lugar, debe usar el operador AND en lugar del operador OR. Además, debe romper la comparación como se demostró a continuación.

En segundo lugar, ha utilizado el operador de asignación ( = ) en la instrucción if else. Debe usar el operador de comparación ( == o === ) para comparar; de lo contrario, devolverá 1 cada vez.

 var websitechoice; websitechoice = parseInt(prompt("Which website would you like to go to? \n 1. google \n 2. gmail \n 3. youtube")) while (websitechoice !== 1 && websitechoice !== 2 && websitechoice !== 3) { alert("you input an incorrect value") websitechoice = parseInt(prompt("Which website would you like to go to? \n 1. google \n 2. gmail \n 3. youtube")) } if (websitechoice === 1) { alert("you chose 1") } else if (websitechoice === 2) { alert("you chose 2") } else { alert("you chose 3") }

Además, será fácil de depurar si coloca su código en el fragmento. Parece que eres bastante nuevo en la comunidad de desarrolladores. ¡Bienvenido a la comunidad de codificadores!

about 4 years ago · Juan Pablo Isaza Relatório

0

El != tiene prioridad sobre el || operador 1 entonces:

 websitechoice != 1 || 2 || 3

siempre evaluará a:

 (websitechoice != 1) || 2 || 3

que no es lo que quieres...

otro tema es que:

 websitechoice = 1

es una asignación, no una comparación.

Para arreglar su código sin cambiar su estructura:

 var websitechoice; websitechoice = parseInt(prompt("Which website would you like to go to? \n 1. google \n 2. gmail \n 3. youtube")) while (websitechoice !== 1 && websitechoice !== 2 && websitechoice !== 3) { alert("you input an incorrect value") websitechoice = parseInt(prompt("Which website would you like to go to? \n 1. google \n 2. gmail \n 3. youtube")) } if (websitechoice === 1) { alert("you chose 1") } else if (websitechoice === 2) { alert("you chose 2") } else { alert("you chose 3") }

Una forma más limpia de verificar si su entrada es una de una lista de valores probablemente sería:

 [1,2,3].includes(websitechoice)

que es más limpio y puede escalar fácilmente a más valores.

También reemplacé los operadores == con === , no use == en JS a menos que sepa lo que está haciendo. 2

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