JavaScript - переключатель не работает - PullRequest
0 голосов
/ 14 июня 2010
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);    
}

как сделать так, чтобы этот переключатель работал?

Ответы [ 5 ]

8 голосов
/ 14 июня 2010

break операторы для вашего переключателя и правильное написание слова "default" должны помочь вам в вашем пути:)

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);    
}
4 голосов
/ 14 июня 2010

Две проблемы:

  • Вы пропускаете ключевое слово break после каждого предложения case.
  • Ваше написание для default былонеправильно.

.

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

Больше на переключателе

2 голосов
/ 14 июня 2010

Измените это на:

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);    
}
2 голосов
/ 14 июня 2010

Вы должны добавлять инструкцию break после каждого случая и использовать значение по умолчанию, а не defalt.

0 голосов
/ 03 февраля 2017

У меня была похожая ситуация, когда добавление оператора break не решало проблему. Я наконец исправил проблему, убедившись, что передал строковый тип в оператор switch. Вы можете сделать это в вашем случае с помощью var newStr = level + "";. + "" гарантирует, что это тип строки. Затем передайте newStr в оператор switch.

...