0

好的,所以我写了一些 JQuery 来在用户添加额外费用时实时更新价格。加高座椅有一段代码,儿童座椅有一段代码。

这是一个,所以你可以确切地看到我在做什么:

    $('.boostseat').change(function() {
        //sets the var id as the id of the select box
        var id = this.id;
        //sets this as the value of the select box
        numberofboostseat = $(this).val();
        //shows a confirmation message
        $('#boostseatadd-'+id).show();
        //this handles if an item is removed, so that the value doesn't reset
        if (typeof(boosttotal) != "undefined" && boosttotal !== null) {
            price = $("#hiddenprice").val() - boosttotal;
        }else{
            price = $("#hiddenprice").val();
        }
        //number of days you hire it for cariable
        numofdays = "<?php echo $length->days; ?>";
        if (numofdays > 4){
            //alert ("boost if1");
            boostcost = Number(20);

        }else if ((numberofboostseat == 1 || numberofboostseat == 0) && (numberofchildseat == "undefined" || numberofchildseat == 0)){

            //alert ("boost if2");
            boostcost = Number(3) * Number(0);

        }else if (numofdays < 1){
            //alert ("boost if3");
            boostcost = Number(3) * Number(1);

        }else{
            //alert ("boost if4");
            boostcost = Number(3) * Number(numofdays);
        }


        // determines final price
        boosttotal = Number(numberofboostseat) * Number(boostcost);
        //more varaibles 
        newprice = Number(price) + Number(boosttotal);
        //updates hiddden fields
        $("input#hiddenboostprice").val(boosttotal);
        $("input#hiddenboostnum").val(numberofboostseat);
        $("input#hiddenprice").val(newprice);

        oldnumofboost = $("input#hiddenboostnum").val(numberofboostseat);
        //updates the HTML (Live Price Update) as decimal
        $('#'+id).html("&euro;" + newprice.toFixed(2));


    });

});

我试图对其进行评论以使其更清楚。还有另一块这样的代码可以处理儿童座椅。

我的问题是第一个儿童座椅加高座椅是免费的。

我试过这个:

}else if ((numberofboostseat == 1 || numberofboostseat == 0) && (numberofchildseat == "undefined" || numberofchildseat == 0)){

正如您在上面看到的,可变的 boostcost 计算了席位的成本。另一段代码,childseat 也有我可以使用的全局变量,类似于这些。

任何人都可以提出一个 if 语句来有效地使第一个儿童或加高座椅免费吗?

4

1 回答 1

1

我在.discount = true变量被递减后添加变量,以防止姊妹变量也被递减。这样 numberofchildseat 或 numberofboostseat 将被打折 1 但绝不会同时打折。只要.discounted尚未设置,javascript 就会将其评估为false.

   if(!numberofchildseat.discounted && numberofboostseat > 0){
        numberofboostseat--;
        numberofboostseat.discounted = true;
   }
   if(!numberofboostseat.discounted && numberofchildseat > 0){
        numberofchildseat--;
        numberofchildseat.discounded = true;
   }
于 2013-03-11T21:54:42.540 回答