转换语句-单个案例有多个结果

时间:2018-09-28 15:03:10

标签: javascript html switch-statement

我有此页面:

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 :(得分:2)

您可以使用一系列消息:

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

然后使用count变量作为此数组的index来依次显示消息。

注意::如果用户键入了某些内容,则必须将count初始化为默认值0,以便下一个空的提交将显示索引{{ 1}}。

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 = "";
}