Оператор переключения Javascript завершается неудачно - PullRequest
0 голосов
/ 13 мая 2011

Возможно, это действительно глупая проблема, но: в консоли выводится «yeeeeeees», но в операторе switch выдается ошибка «Неизвестный шаг».

Что я делаю не так?

        if (step === 'menuLoaded') console.log('yeeeeeeeees');
        switch (step) {
            case 'menuLoaded':
                this.window.activate_side_menu();
                this.handleDomainFtp();
                break;
            case 'ftpStep1':
                this.handleDomainFtp(1);
                break;
            case 'ftpStep2':
                this.handleDomainFtp(2);
                break;
            case 'startMysql':
                alert('starting mysql');
                this.handleDomainMysqlList();
                break;
            case 'mysqlList':
                this.handleDomainMysql();
                break;
            case 'mysqlPage':
                this.handleDomainMysql(true);
                break;
            case 'done':
                run();
                break;
            default:
                throw new Error('Unknown step: ' + step);
                break;
        }

Ответы [ 5 ]

1 голос
/ 13 мая 2011

Я получаю ошибку TypeError: Object [object DOMWindow] has no method 'activate_side_menu' - вы обязательно объявили эту функцию где-нибудь в доступной области видимости?

0 голосов
/ 28 декабря 2014

попробуйте использовать оператор по умолчанию без "break;"

default:
            throw new Error('Unknown step: ' + step);
}
0 голосов
/ 26 сентября 2014

Скорее всего, необходимо присвоить 'this' для 'var self' и использовать 'self' вместо этого.

0 голосов
/ 13 мая 2011

Поскольку, очевидно, нет другого способа закрыть мой вопрос, я просто отвечу на него сам.

Проблема была в следующем коде. Позже у меня есть другой оператор switch с точно такой же ошибкой ().

Как я уже сказал, возможно, что-то глупое ....

Но спасибо за все время!

0 голосов
/ 13 мая 2011

Я уверен, что JavaScript switch() не будет принимать строки - вы должны использовать целочисленные значения.Если вы хотите использовать имена, используйте переменные типа enum:

const step_menuLoaded = 0;
const step_menuFtp1 = 1;
const step_menuFtp2 = 2;
const step_startSql = 3;
...

Проверяли ли вы свой код / ​​источник на наличие непечатаемых символов внутри строк?

...