Switch Statement - несколько результатов для одного случая - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть эта страница:

var count = 0;

function switchStatement() {
  var text;
  var answers = document.getElementById("userInput").value;
  switch (answers) {
    case "":
      text = (count > 0) ? "You didn't type anything." : "Please type something down...";
      if (count < 1)
        count++;
      else
        count = 0;
      break;
    default:
      text = "Good job!";
  }
  document.getElementById("feedback").innerHTML = text;
  document.getElementById("userInput").value = "";
}
<p>Please write something down and press "enter".</p>

<input id="userInput" type="text" onKeyDown="if(event.keyCode==13) switchStatement();">

<p id="feedback"></p>

Когда пользователь ничего не печатает перед нажатием «enter» (это case = "";), появится сообщение.Если он снова сделает то же самое, появится другое сообщение.Если он сделает это в третий раз, он вернется к первому сообщению.

Как я могу добавить больше сообщений, чтобы избежать такого маленького цикла?Скажем, если я хотел бы иметь 5 разных сообщений, когда пользователь ничего не печатает, что я должен изменить в своем коде?

1 Ответ

0 голосов
/ 28 сентября 2018

Вы можете использовать массив сообщений:

var messages = ["message 1...", "message 2...", "message 3...", "message 4...", "message 5..."]

Затем использовать переменную count в качестве index этого массива для отображения сообщений одно за другим.

ПРИМЕЧАНИЕ: Вы должны установить count к значению по умолчанию 0 в случае, если пользователь что-то набрал, поэтому при следующей пустой отправке будет отображено первое сообщение в индексе 0.

var count = 0;
var messages = ["message 1...", "message 2...", "message 3...", "message 4...", "message 5..."];

function switchStatement() {
  var text;
  var answers = document.getElementById("userInput").value;

  switch (answers) {
    case "":
      text = messages[count];
      count = count < messages.length - 1 ? count + 1 : 0;
      break;
    default:
      text = "Good job!";
      count = 0;
  }
  document.getElementById("feedback").innerHTML = text;
  document.getElementById("userInput").value = "";
}
<p>Please write something down and press "enter".</p>

<input id="userInput" type="text" onKeyDown="if(event.keyCode==13) switchStatement();">

<p id="feedback"></p>
...