Je fais un exercice pour une classe et nous créons une liste Todo.
Mon problème est que lorsque je tape mon Todo et que j'appuie sur Entrée, j'obtiens le message Enter new Todo code >, au lieu de
Tâche ajoutée
.
Il semble que je suis coincé dans cette boucle else if
et elle ne passera pas à la prochaine autre if instruction.
var todos = ["Buy New Turtle"]; window.setTimeout(function() { var input = prompt("What would you like to do?"); while(input !== "quit") { if(input === "list") { console.log("**********"); todos.forEach(function(todo, i) { console.log(i + ": " + todo); }) console.log("**********") } else if(input === "new") { var newTodo = prompt("Enter new todo"); todos.push(newTodo); console.log("Added todo"); } else if(input === "delete"){ var index = prompt("Enter index of todo to delete"); todos.splice(index, 1); } } input = prompt("What would you like to do?"); console.log("OK, YOU QUIT THE APP"); }, 500);
3 Réponses :
Vous devez placer la redéclaration de input
dans la boucle while
. Vérifiez également si input
est véridique - de cette façon, si quelqu'un ferme la boîte de dialogue, cela ne plante pas.
var todos = ["Buy New Turtle"]; window.setTimeout(function() { var input = prompt("What would you like to do?"); while (input !== "quit" && input) { if (input === "list") { console.log("**********"); todos.forEach(function(todo, i) { console.log(i + ": " + todo); }) console.log("**********") } else if (input === "new") { var newTodo = prompt("Enter new todo"); todos.push(newTodo); console.log("Added todo"); } else if (input === "delete") { var index = prompt("Enter index of todo to delete"); todos.splice(index, 1); } input = prompt("What would you like to do?"); } console.log("OK, YOU QUIT THE APP"); }, 500);
Tu m'as battu, ça devrait être la réponse acceptée
Votre ligne:
input = prompt ("Que voulez-vous faire?");
est en dehors de votre boucle while
, donc à chaque fois que vous entrez un todo, la variable input
a toujours la valeur "new".
Regardez l'extrait de code ci-joint pour les corrections:
var todos = ["Buy New Turtle"]; window.setTimeout(function() { var input = prompt("What would you like to do?"); while(input !== "quit") { if(input === "list") { console.log("**********"); todos.forEach(function(todo, i) { console.log(i + ": " + todo); }) console.log("**********") } else if(input === "new") { var newTodo = prompt("Enter new todo"); todos.push(newTodo); console.log("Added todo"); } else if(input === "delete"){ var index = prompt("Enter index of todo to delete"); todos.splice(index, 1); } // this line was moved into the while loop input = prompt("What would you like to do?"); } console.log("OK, YOU QUIT THE APP"); }, 500);
var todos = ["Buy New Turtle"]; newTodo = []; window.setTimeout(function() { var input = prompt("What would you like to do?"); while(input !== "quit") { if(input === "list") { console.log("**********"); todos.forEach(function(todo, i) { console.log(i + ": " + todo); }) console.log("**********") } else if(input === "new") { var newTodo = prompt("Enter new todo"); todos.push(newTodo); console.log("Added todo"); } else if(input === "delete"){ var index = prompt("Enter index of todo to delete"); todos.splice(index, 1); } input = prompt("What would you like to do?"); } console.log("OK, YOU QUIT THE APP"); }, 500);`enter code here`
Vous ne vérifiez plus jamais l '
input
(jusqu'à ce que lewhile
soit sorti), donc lewhile
boucle indéfiniment