Вызов функции из функции JS - PullRequest
0 голосов
/ 12 октября 2018

В листинге 1 есть код, а в листинге 2 есть функция. Оба фрагмента находятся в одном файле, и фрагмент из листинга 1 хорошо выполняет другие функции, как только функция из листинга 2 не будет работать.Если вы копируете весь фрагмент в функцию, все работает, но вы хотите сделать это проще.Как я могу вызвать часть кода в функции?

листинг 1

   

 var get_number = obj.Price.Itog;
var get_сurrency = obj.Currency.symbol;

function declOfNum(get_number, titles) {
    return titles[(get_number%10==1 && get_number%100!=11) ? 0 : get_number%10>=2 && get_number%10<=4 && (get_number%100<10 || get_number%100>=20) ? 1 : 2]; //v3 
    }
if (get_сurrency == 'грн') {
    var final_currency = declOfNum(get_number, ['грИвна', 'грИвны', 'грИвен']);
}
else if (get_сurrency == 'сом') {
    var final_currency = declOfNum(get_number, ['сом', 'сома', 'сомов']);
}
else if (get_сurrency == 'тг') {
    var final_currency = 'тенгЕ';
}
else {
    var final_currency = declOfNum(get_number, ['рУбль', 'рублЯ', 'рублЕй']);
}

листинг 2

   

 function GenTextPriceHour(obj)
    {
        var t = '';
        var coeff;

        if (obj.Tariff.tunes.C_PRICE_FACTOR == null) {
            coeff = 1;
        }else {coeff = obj.Tariff.tunes.C_PRICE_FACTOR;
            }

        if(obj)
        {
            if (obj.Price.Discount) {
                t = t + getText(obj.Language.code,'PriceWithDiscountHour',[Round(obj.Price.Itog), final_currency]) + ' ';
            } else {
                t = t + getText(obj.Language.code,'PriceNoDiscountHour',[Round(obj.Price.Itog), final_currency]) + ' ';
            }
        }
        return t;
    }

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Похоже, вы нигде не вызываете функцию GenTextPriceHour(obj).Кроме того, вам необходимо определить final_currency как переменную GLOBAL из операторов if, чтобы он мог получить значение, переданное в него в операторах if, а затем использовать его в GenTextPriceHour(obj). В настоящее времяпеременная определяется ЛОКАЛЬНО, и поэтому ее нельзя использовать вне оператора функции / if и т. д. Для этого в листинге № 1 просто введите:

var get_number = obj.Price.Itog;
var get_сurrency = obj.Currency.symbol;
var final_currency = '';

function declOfNum(get_number, titles) {
    return titles[(get_number%10==1 && get_number%100!=11) ? 0 : get_number%10>=2 && get_number%10<=4 && (get_number%100<10 || get_number%100>=20) ? 1 : 2]; //v3 
    }
if (get_сurrency == 'грн') {
    final_currency = declOfNum(get_number, ['грИвна', 'грИвны', 'грИвен']);
}
else if (get_сurrency == 'сом') {
    final_currency = declOfNum(get_number, ['сом', 'сома', 'сомов']);
}
else if (get_сurrency == 'тг') {
    final_currency = 'тенгЕ';
}
else {
    final_currency = declOfNum(get_number, ['рУбль', 'рублЯ', 'рублЕй']);
}
// CALL THE FUNCTION HERE 
GenTextPriceHour(obj)
0 голосов
/ 12 октября 2018

Вы пытаетесь использовать final_currency в GenTextPriceHour.Если вы переместите свою логику if-else в функцию, final_currency не будет доступна для функции GenTextPriceHour.

Вместо этого определите final_currency глобально, а затем переместите код обновления в функцию, котораяобновит глобальную переменную, примерно так:

   

var get_number = obj.Price.Itog;
var get_сurrency = obj.Currency.symbol;
var final_currency = '';

function declOfNum(get_number, titles) {
    return titles[(get_number%10==1 && get_number%100!=11) ? 0 : get_number%10>=2 && get_number%10<=4 && (get_number%100<10 || get_number%100>=20) ? 1 : 2]; //v3 
    }

function updateFinalCurrency() {
	if (get_сurrency == 'грн') {
        final_currency = declOfNum(get_number, ['грИвна', 'грИвны', 'грИвен']);
    }
    else if (get_сurrency == 'сом') {
        final_currency = declOfNum(get_number, ['сом', 'сома', 'сомов']);
    }
    else if (get_сurrency == 'тг') {
        final_currency = 'тенгЕ';
    }
    else {
        final_currency = declOfNum(get_number, ['рУбль', 'рублЯ', 'рублЕй']);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...