Javascript-从一个switch语句案例转到另一个switch语句

时间:2018-09-30 18:08:13

标签: javascript switch-statement swap

我正在尝试在switch语句中使用一个案例,该案例会跳到另一个switch语句中。

在实践中,我希望用户在文本框中键入“关闭页面”,并且在浏览器关闭页面之前,我希望询问用户是否确定。键入“是”将关闭页面,键入“否”将返回上一个switch语句。

我需要使用switch语句,因为用户可以在文本框中键入许多其他内容,从而产生不同的反馈。

我为每个switch语句使用了一个不同的文本框,必要时交换它们,以尝试能够使用相同的键调用这两个函数。

这就是我所拥有的。但这行不通... 有帮助吗?

        function SwapDivs(div1, div2) {
            d1 = document.getElementById(div1);
            d2 = document.getElementById(div2);
            if (d2.style.display == "none") {
                d1.style.display = "none";
                d2.style.display = "block";
            } else {
                d1.style.display = "block";
                d2.style.display = "none";
            }
        }

        function myFunction01() {
            var text;
            var answers = document.getElementById("myInput01"").value;
            switch (answers) {
                case "close page":
                    text = "are you sure?";
                    SwapDivs('div01', 'div02');
                    break;
                default:
                    text = "no valid input";
            }
            document.getElementById("feedback").innerHTML = text;
        }

        function myFunction02() {
            var text;
            var answers = document.getElementById("myInput02").value;
            switch (answers) {
                case "yes":
                    text = "Why?";
                    break;
                case "no":
                    text = "Good!";
                    break;
                default:
                    text = "no valid input";
            }
            document.getElementById("feedback").innerHTML = text;
        }
    <p id="feedback"></p>

    <div id="div01" style="display:block">
        <input id="myInput01" type="text" placeholder="This is TextBox 01." onKeyDown="if(event.keyCode==13) myFunction01();">
    </div>

    <div id="div02" style="display:none">
        <input id="myInput02" type="text" placeholder="This is TextBox 02." onKeyDown="if(event.keyCode==13) myFunction02();">
    </div>

1 个答案:

答案 0 :(得分:1)

您的第一个功能有一个额外的报价:

var answers = document.getElementById("myInput01"").value;

应该是:

var answers = document.getElementById("myInput01").value;

我了解这种行为是

  • 如果用户输入的文字不是“关闭页面”,我们将向他们提供无效输入的反馈。

    • 如果用户输入“关闭页面”,我们将询问他们是否确定,然后更改为输入2。

    • 在输入2上,如果他们输入是,我们说为什么,如果他们输入否,我们说好,否则说没有有效的输入。

如果可以预期,该代码对我有用。

您可以在下面运行此程序(转换为ES6):

const SwapDivs = (div1, div2) => {
  const d1 = document.getElementById(div1);
  const d2 = document.getElementById(div2);
  if (d2.style.display == "none") {
    d1.style.display = "none";
    d2.style.display = "block";
  } else {
    d1.style.display = "block";
    d2.style.display = "none";
  }
};

const myFunction01 = () => {
  let text;
  const answers = document.getElementById("myInput01").value;
  switch (answers) {
    case "close page":
      text = "are you sure?";
      SwapDivs('div01', 'div02');
      break;
    default:
      text = "no valid input";
  }
  document.getElementById("feedback").innerHTML = text;
};

const myFunction02 = () => {
  let text;
  const answers = document.getElementById("myInput02").value;
  switch (answers) {
    case "yes":
      text = "Why?";
      break;
    case "no":
      text = "Good!";
      break;
    default:
      text = "no valid input";
  }
  document.getElementById("feedback").innerHTML = text;
};
<p id="feedback"></p>

    <div id="div01" style="display:block">
        <input id="myInput01" type="text" placeholder="This is TextBox 01." onKeyDown="if(event.keyCode==13) myFunction01();">
    </div>

    <div id="div02" style="display:none">
        <input id="myInput02" type="text" placeholder="This is TextBox 02." onKeyDown="if(event.keyCode==13) myFunction02();">
    </div>