Изменение значения переменной на основе elseif

0

Я новичок в стеке и новый в jQuery. Я нашел здесь некоторые реакции, поэтому я собираю этот "калькулятор". Он функциональный, но есть одна проблема, переменная, называемая "hodnota", не меняет значение в соответствии с инструкцией elseif.

Пожалуйста, где проблема, никто не знает? :-)

Просто мне нужно изменить значение под названием "hodnota" на основе значений переменных в "условиях if" и при изменении поля select (.ninja-forms-field)...

Мой код здесь...

    <script>
var vyska;
var barva;
var rozmery;
var $hodnota = $(this.hash);
var pocet;

rozmery=jQuery("#ninja_forms_field_165 :selected").text();
barva=jQuery("#ninja_forms_field_167 :selected").text();
vyska=jQuery("#ninja_forms_field_166 :selected").text();


if(/200x200cm/i.test(rozmery)&&/140/i.test(vyska)&&/režná/i.test(barva)){
hodnota=2380;
}else if(/200x200cm/i.test(rozmery)&&/150/i.test(vyska)&&/režná/i.test(barva)){
$hodnota=2480;
}else if(/200x200cm/i.test(rozmery)&&/160/i.test(vyska)&&/režná/i.test(barva)){
$hodnota=2780;
}else if(/205x205cm/i.test(rozmery)&&/140/i.test(vyska)&&/režná/i.test(barva)){
$hodnota=2480;
}else if(/205x205cm/i.test(rozmery)&&/150/i.test(vyska)&&/režná/i.test(barva)){
hodnota=2580;
}else if(/205x205cm/i.test(rozmery)&&/160/i.test(vyska)&&/režná/i.test(barva)){
$hodnota=2880;
}else{
$hodnota=0;
}

jQuery('.ninja-forms-field').change(function(){
alert($hodnota);
});


</script>
  • 0
    Ходнота настраивается один раз при запуске. Вам нужно будет добавить вычисление в ваш обработчик событий, чтобы заставить его пересчитывать hodnota. Также должен быть лучший способ сделать то, что вы пытаетесь достичь, не повторяя так много проверок и не жестко кодируя результаты расчетов только для заданных входных данных?
  • 0
    Хм, спасибо. Hodnota - цена для определенного типа высоты и ширины и цвета десятого. Цены не имеют легких отношений с недвижимостью. Я делаю это согласно следующей таблице: typko.cz/wp-content/uploads/2014/02/cenik_podsadove_stany.pdf (извините, это чешский язык).
Показать ещё 2 комментария
Теги:

1 ответ

0

Вот несколько вопросов, как решить проблему... JSFIDDLE

function spocitejHodnotu() {

    var rozmer = jQuery('#ninja_forms_field_165 option:selected').text();
    var vyska = jQuery('#ninja_forms_field_166 option:selected').text();
    var barva = jQuery('#ninja_forms_field_167 option:selected').text();

    var is200 = /200x200cm/i.test(rozmer);
    var is205 = /205x205cm/i.test(rozmer);
    var is140 = /140/i.test(vyska);
    var is150 = /150/i.test(vyska);
    var is160 = /160/i.test(vyska);
    var isRezna = /režná/i.test(barva);
    var isSeda= /šedá/i.test(barva);
    var isSahara=/sahara/i.test(barva);
    var isKhaki=/khaki/i.test(barva);
    var is440=/režná 440g na m2/i.test(barva);  
    var hodnota = 0;

    if (is200) {
      if (is140) {
        if (isRezna) {
            hodnota=2380;
         } else if(isSeda){
            hodnota=2520;
        } else if(isSahara){
            hodnota=2520;
        } else if(isKhaki){
            hodnota=2600;
        } else if(is440){
            hodnota=3000;
        }
      }
      if (is150) {
        if (isRezna) {
            hodnota=2480;
         } else if(isSeda){
            hodnota=2620;
        } else if(isSahara){
            hodnota=2620;
        } else if(isKhaki){
            hodnota=2700;
        } else if(is440){
            hodnota=3100;
        }
      }
      if (is160) {
        if (isRezna) {
            hodnota=2780;
         } else if(isSeda){
            hodnota=2920;
        } else if(isSahara){
            hodnota=2920;
        } else if(isKhaki){
            hodnota=3000;
        } else if(is440){
            hodnota=3500;
        }
      }
    }
    if (is205) {
      if (is140) {
        if (isRezna) {
            hodnota=2480;
         } else if(isSeda){
            hodnota=2620;
        } else if(isSahara){
            hodnota=2620;
        } else if(isKhaki){
            hodnota=2700;
        } else if(is440){
            hodnota=3100;
        }
      }
      if (is150) {
        if (isRezna) {
            hodnota=2580;
         } else if(isSeda){
            hodnota=2720;
        } else if(isSahara){
            hodnota=2720;
        } else if(isKhaki){
            hodnota=2800;
        } else if(is440){
            hodnota=3250;
        }
      }
      if (is160) {
        if (isRezna) {
            hodnota=2880;
         } else if(isSeda){
            hodnota=3020;
        } else if(isSahara){
            hodnota=3020;
        } else if(isKhaki){
            hodnota=3100;
        } else if(is440){
            hodnota=3600;
        }
      }
    }   

    return hodnota;

}

// tohle se provede, pokud se změní nějaký select
jQuery('#ninja_forms_form_7').find('select').change(function () {
    var hodnota = spocitejHodnotu();
    alert(hodnota);
});

// tohle se provede při načtení skriptu
alert(spocitejHodnotu());

Ещё вопросы

Сообщество Overcoder
Наверх
Меню