【问题标题】:javascript - switch not workingjavascript - 开关不起作用
【发布时间】:2010-06-14 18:49:10
【问题描述】:
function FM_log(level, text) {

    // caso não seja log total escolhe o que loga
    var log = false;
    switch (level) {
        case "addtoprio()":log = true;
        case "alternaTropas()":log = false;
        case "sendtroops()":log = false;
        defalt: log = false;
    }

    if ((logTotal == false) && (log == true))
        GM_log(horaAtual() + " - "+level+", "+text);
    else if (logTotal == true)
        GM_log(horaAtual() + " - "+level+", "+text);    
}

如何进行这种切换是一种工作方式?

【问题讨论】:

    标签: javascript string switch-statement


    【解决方案1】:

    break 声明您的开关,正确拼写“默认”应该可以帮助您:)

    function FM_log(level, text) 
    {
       // caso não seja log total escolhe o que loga
       var log = false;
       switch (level) 
       {
          case "addtoprio()":
             log = true;
             break;
          case "alternaTropas()":
             log = false;
             break;
          case "sendtroops()":
             log = false;
             break;
          default: 
             log = false;
             break;
       }
    
       if ((logTotal == false) && (log == true))
          GM_log(horaAtual() + " - "+level+", "+text);
       else if (logTotal == true)
          GM_log(horaAtual() + " - "+level+", "+text);    
    }
    

    【讨论】:

      【解决方案2】:

      两个问题:

      • 您在每个 case 子句后缺少 break 关键字。
      • default 的拼写错误。

      .

         switch (level) {
              case "addtoprio()":log = true; break;
              case "alternaTropas()":log = false; break;
              case "sendtroops()":log = false; break;
              default: log = false; break;
          }
      

      More On Switch

      【讨论】:

      • 这里相同:默认不默认。
      【解决方案3】:

      你必须在每个case之后添加break指令,并且使用default not defalt。

      【讨论】:

        【解决方案4】:

        改成这样:

        function FM_log(level, text) {
        
            // caso não seja log total escolhe o que loga
            var log = false;
            switch (level) {
                case "addtoprio()":log = true; break;
                case "alternaTropas()":log = false; break;
                case "sendtroops()":log = false; break;
                defalt: log = false; break;
            }
        
            if ((logTotal == false) && (log == true))
                GM_log(horaAtual() + " - "+level+", "+text);
            else if (logTotal == true)
                GM_log(horaAtual() + " - "+level+", "+text);    
        }
        

        【讨论】:

          【解决方案5】:

          我遇到过类似的情况,添加 break 语句并不能解决问题。我最终通过确保将字符串类型传递给 switch 语句来纠正问题。您可以通过var newStr = level + ""; 在您的情况下执行此操作。 + "" 将确保它是字符串类型。然后将newStr 传递到您的 switch 语句中。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-10-05
            • 1970-01-01
            • 2014-11-03
            • 1970-01-01
            • 2016-06-02
            • 2014-01-20
            • 1970-01-01
            相关资源
            最近更新 更多