Jquery 基于elseif更改变量的值

Jquery 基于elseif更改变量的值,jquery,Jquery,我在堆栈中是新手,在jQuery中也是新手。我在这里发现了一些反应,所以我收集了这些计算器。它是功能性的,但有一个问题,称为hodnota的变量没有根据elseif语句更改值 请问,问题出在哪里,谁也不认识- 简单地说,我需要根据if条件中的变量值以及select.ninja-forms-field正在更改时更改一个名为hodnota的值 我的代码在这里 <script> var vyska; var barva; var rozmery; var $hodnota = $(

我在堆栈中是新手,在jQuery中也是新手。我在这里发现了一些反应,所以我收集了这些计算器。它是功能性的,但有一个问题,称为hodnota的变量没有根据elseif语句更改值

请问,问题出在哪里,谁也不认识-

简单地说,我需要根据if条件中的变量值以及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>

下面是一些如何解决这个问题的技巧。。。


hodnota在启动时设置一次。您需要将计算添加到事件处理程序中,以使其重新计算hodnota。还必须有更好的方法来完成您试图实现的目标,而不必重复这么多检查,也不必只对给定输入的计算结果进行硬编码?嗯,谢谢。Hodnota是针对特定类型的高度、宽度和颜色的价格。价格与房产之间的关系并不轻松。我是根据这张表做的:对不起,这是捷克语。啊,很公平。我认为可能有更好的方法来存储数据,例如barva地图->rozmery地图->vyska地图->价格,或者至少测试barva=rezna一次,然后在其中嵌套下一级ifs,等等。你说得对,Rup。我会考虑我的IFs的结构。我将其更改为名为rozmery的组,并首先检查它,但仍然必须找到如何存储正确的值。我只是个初学者,我的英语相对较差。
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());