@deep69prod

Почему case выдает всегда 0?

Здравствуйте вот код js
var profile_calc_value = 0;

var price_dugi = 0;

switch (profile_calc_value) {
  case 0:
    price_dugi = 1;
	break;
  case 1:
    price_dugi = 2;
	break;
  case 2:
    price_dugi = 3;
	break;
  case 3:
    price_dugi = 4;
	break;
  default:
    alert( 'Я таких значений не знаю' );
}

$('.main_calc_block').click(function(){ 
   var profile_calc_value = $('#profile_calc').val();
}


Вот html:
<li class="li_even">Размер теплицы</li>
                    <li class="li_odd">
                            <div class="selectcalc section">
                                <select class="width-auto" id="profile_calc">
                                    <option value="0">4x3</option>
                                    <option value="1">6x3</option>
                                    <option value="2">8x3</option>
                                    <option value="3">10x3 </option>
                                </select>
                            </div>
                    </li>


Почему когда я выбираю в селекторе разные значения, то var profile_calc_value всегда равно нулю?
  • Вопрос задан
  • 105 просмотров
Решения вопроса 1
FeST1VaL
@FeST1VaL
Тихий
Учите JS.

У вас выполняется ваш код только 1 раз при загрузке страницы. А дальше ему уже пофиг на выше значение. Чтобы оно бралось новое при каком то действии, надо это действие описать...

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

Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Уже от вас сегодня звучал этот вопрос, только там был if-else, а теперь switch (кто-то там советовал вроде).
Я могу лишь посоветовать немного вернуться назад, и подучить программирование. Судя по вопросу, вы не совсем понимаете, как выполняется код. Ваш switch будет выполнен один раз, и дальше уже неважно, поменяется ли значение profile_calc_value. Также вы не меняете profile_calc_value в вашем обработчике события, у вас там локальная переменная, т.к. стоит var, а значит глобальная profile_calc_value не изменится.
Почитайте книгу Петцольд Ч. "Код. Тайный язык информатики", а после раза два прочитайте и выполните задачи с https://learn.javascript.ru/
Ответ написан
Комментировать
Krauzer
@Krauzer
Веб-разработчик
Вы объявляете объявленную переменную в обработчике, используя конструкцию var:
$('.main_calc_block').click(function(){ 
   var profile_calc_value = $('#profile_calc').val();
}

Тем самым создаете новую локальную переменную, а в глобальной значение не изменяете.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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