首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带变量值到交换机的IF语句出现故障

带变量值到交换机的IF语句出现故障
EN

Stack Overflow用户
提问于 2019-05-15 06:23:17
回答 6查看 42关注 0票数 0

我试图发出一个提示,用户必须在1到4的范围内输入一个数字(通过do-while循环重新提示,直到输入正确的数字),然后该数字将对应于交换机中的一个情况(这将打开一个新窗口)。在测试中,代码被正确地执行到my语句,其中代码突然“忘记”用户输入的数字,以退出while循环,因此不会为开关中的每一种情况将用户带到代码中。

测试:提示=用户输入5,新提示:无效选择!请输入1到4之间的数字,用户输入4,提示关闭。 有人能明白为什么IF语句中的reDirect变量没有进入开关吗?

我会接受任何建议,但我需要给用户输入超出范围的数字的“自由”,以证明我可以处理错误。

我尝试在if语句中实现新变量,但它们也被排除在关闭的开关之外。

代码语言:javascript
复制
    function reDirect() {
       var reDirect = 0;
       reDirect = parseInt(prompt("Input number between 1 and 4", "1"));
           if (reDirect >=5 || reDirect <=0) {
               var reDirect = 0
               do reDirect = parseInt(prompt("Invalid! Input number between 1 and 4", "1"));
               while (reDirect >=5 || reDirect <=0);
           } 
           else
           {
           var element = document.getElementById("reDirect");
                 switch (reDirect) {
                      default:
                      break;    
                      case 1:
               window.open("URL","_blank","height=800px, width=800px");
                      break;
        }
    }

};

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2019-05-15 06:26:37

听起来,您不希望有条件地运行switch --一旦验证了输入是否有效,您总是希望运行switch

只需将switch移出else,这样它就可以运行了:

代码语言:javascript
复制
function reDirect() {
  var reDirect = 0;
  reDirect = parseInt(prompt("Input number between 1 and 4", "1"));
  if (reDirect >= 5 || reDirect <= 0) {
    do reDirect = parseInt(prompt("Invalid! Input number between 1 and 4", "1"));
    while (reDirect >= 5 || reDirect <= 0);
  }
  var element = document.getElementById("reDirect");
  switch (reDirect) {
    case 1:
      window.open("URL", "_blank", "height=800px, width=800px");
      break;
    // other cases
    default: break; // ???
  }
}

还请注意,函数声明块的末尾不应该有;,而且由于reDirect是在函数的顶部声明的,所以不应该尝试在if块中使用var重新声明它。(您还可能希望在案例2-4中添加一些案例,或者在default案例中添加更有意义的内容)

票数 0
EN

Stack Overflow用户

发布于 2019-05-15 06:26:57

default出现在switch的末尾

代码语言:javascript
复制
switch (reDirect) {
    case 1:
        window.open("URL","_blank","height=800px, width=800px");
        break;
    default:
        break;
}
票数 0
EN

Stack Overflow用户

发布于 2019-05-15 06:28:08

将默认值放在switch语句的末尾:

代码语言:javascript
复制
function reDirect() {
      var reDirect = 0;
      reDirect = parseInt(prompt('Input number between 1 and 4', '1'));
      if (reDirect >= 5 || reDirect <= 0) {
        var reDirect = 0;
        do
          reDirect = parseInt(prompt('Invalid! Input number between 1 and 4', '1'));
        while (reDirect >= 5 || reDirect <= 0);
      } else {
        var element = document.getElementById('reDirect');
        switch (reDirect) {
          case 1:
            window.open('URL', '_blank', 'height=800px, width=800px');
            break;
          default:
            break;
        }
      }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56142870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档