Застрял в остальном, если цикл в Javascript - PullRequest
1 голос
/ 30 июня 2019

Я делаю упражнение для класса, и мы создаем список задач. Моя проблема в том, что, когда я набираю свою задачу и нажимаю ввод, я получаю сообщение «Введите новую задачу» вместо «Добавленная задача». Кажется, я застрял в этом другом цикле if, и он не перейдет к следующему оператору if.

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 ]

2 голосов
/ 30 июня 2019

Вы должны поместить объявление input внутри цикла while.Также проверьте, является ли input правдивым - таким образом, если кто-то закрывает окно с приглашением, оно не падает.

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);
1 голос
/ 30 июня 2019
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`
1 голос
/ 30 июня 2019

Ваша строка:

input = prompt("What would you like to do?"); находится вне вашего цикла while, поэтому каждый раз, когда вы вводите задачу, переменная input всегда имеет значение "new".

Посмотрите в прилагаемом фрагменте исправления:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...