Задать вопрос
oxojeck
@oxojeck

Как вернуть значение переменной из функции change?

var priceFormat = 0;
price = parseInt($(".tour-price span").text());
$("#tour-format").change(function() {
	var tourFormat = parseInt($(this).children("option:selected").val());
	if (tourFormat == 1) {
		priceFormat = 0;
	} else if (tourFormat == 2) {
		priceFormat = 70;
	}
});
console.log(priceFormat);

При любом варианте выводит "0", а мне надо это значение дальше использовать. Как это сделать? Спасибо.
  • Вопрос задан
  • 32 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@choupa
Архитектор (обычный, который строит)
1. Без HTML не раскурить. По всей видимости у вас #tour-format — это <select>. Поэтому надо просто:
var tourFormat = parseInt( $(this).val() );
Но это лишь предположение, т.к. вы заставляете тут нас гадать.

2. Если у вас код именно такой, как вы написали, то очевидно, что console.log(priceFormat) вызывается только один раз, при первом выполнении этого куска кода, когда очевидно priceFormat = 0. По событию change консоль не вызывается, т.к. она находится за пределами этой функции!

3. А вообще отлаживайте код, тут ничего сверхсложного нет и быть не может. Выводите в консоль tourFormat из середины анонимной функции, смотрите, что так происходит... Ну и т.д.

4. Ещё лучше такие вещи делать не if-ами, а так

const priceFormat = { '1': 0, '2': 70 }; //  Особенно если этих вариантов будет не два, а больше.
$( "#tour-format" ).change( 
    console.log( priceFormat[ $( this ).val() ] );
);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы