Проблема с выключателем - PullRequest
1 голос
/ 26 июля 2010

У меня есть этот код:

var str = $("#datepicker").datepicker("getDate");
    var datestr = str.toString().split(" ");
    switch(datestr[1]) {
        case "Jan":
        var datestrmon = "Яну";
        break;
        case "Feb":
        var datestrmon = "Фев";
        break;
        case "Mar":
        var datestrmon = "Мар";
        break;
        case "Apr":
        var datestrmon = "Апр";
        break;
        case "May":
        var datestrmon = "Май";
        break;
        case "Jun":
        var datestrmon = "Юни";
        break;
        case "July":
        var datestrmon = "Юли";
        break;
        case "Aug":
        var datestrmon = "Авг";
        break;
        case "Sep":
        var datestrmon = "Сеп";
        break;
        case "Oct":
        var datestrmon = "Окт";
        break;
        case "Nov":
        var datestrmon = "Ное";
        break;
        case "Dec":
        var datestrmon = "Дек";
        break;
        default:
        datestr[1];
    }
    alert(datestrmon);

Я ожидаю, когда браузер предупреждает меня datestrmon, чтобы предупредить "Юли", но он предупреждает меня "undefined". Почему?

Ответы [ 2 ]

5 голосов
/ 26 июля 2010
  1. Вы уверены, что это "июль" вместо "июль"?
  2. Ваш default: кейс не назначил datestr[1] на datestrmon. Это намеренно?

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

var datestrmon = ({"Jan": "Яну",
                   "Feb": "Фев",
                   ...
                   "Dec": "Дек"})[datestr[1]] || datestr[1];
//                                            ^^^^^^^^^^^^^
//                                            optional, if you think stuff outside of
//                                            the table could appear and need a
//                                            fallback.
3 голосов
/ 26 июля 2010

Попробуйте определить datestrmon вне кейса. Ниже приведен некоторый очищенный код. Если это не работает, пожалуйста, оставьте свой вклад.

var str = $("#datepicker").datepicker("getDate");
var datestr = str.toString().split(" ");
var datestrmon = "";

switch(datestr[1]) {
    case "Jan": {
     datestrmon = "Яну";
     break;
    }
    case "Feb": {
     datestrmon = "Фев";
     break;
    }
    case "Mar": {
     datestrmon = "Мар";
     break;
    }
    case "Apr": {
     datestrmon = "Апр";
     break;
    }
    case "May": {
     datestrmon = "Май";
     break;
    }
    case "Jun": {
     datestrmon = "Юни";
     break;
    }
    case "July": {
      datestrmon = "Юли";
      break;
    }
    case "Aug": {
     datestrmon = "Авг";
     break;
    }
    case "Sep": {
     datestrmon = "Сеп";
     break;
    }
    case "Oct": {
     datestrmon = "Окт";
     break;
    }
    case "Nov": {
     datestrmon = "Ное";
     break;
    }
    case "Dec": {
     datestrmon = "Дек";
     break;
    }
    default: {
     datestr[1];
    }
}
alert(datestrmon);
...