基于elseif改变变量的值

时间:2014-03-21 00:42:45

标签: jquery

我是堆栈新手,jQuery新手。我在这里发现了一些反应,所以我收集了这些“计算器”。功能正常,但有一个问题,名为“hodnota”的变量不会根据elseif语句更改值。

请问,问题出在哪里,不认识任何人? : - )

我只需要根据“if conditions”中的变量值以及select(.ninja-forms-field)更改时更改名为“hodnota”的值...

我的代码在这里......

    <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>

1 个答案:

答案 0 :(得分: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());