簡體   English   中英

如何基於Javascript中的人數計算房間數?

[英]How to calculate number of room based on number of person in Javascript?

我正在嘗試根據用戶輸入的人數來計算房間總數。 最多可容納7人。 房間類型將為雙胞胎(每名成人和兒童每人2人),雙人間(每名成人和兒童每人2人),單人(每間房間1人)和加床。 人員類型將為“成人”,“有床的兒童”和“無床的兒童”。

對於房間計算,我們需要添加[(成人+帶床的兒童/ 2)]以獲取房間價值。 默認情況下,系統必須將房間數放在雙胞胎共享中。 帶床的兒童必須與成人同住一個雙人房。 因此,任何超過奇數的數字都將導致單人間。

例如:4名成人和1名兒童; 共5人。 結果:2張單人床和1張單人間。

用戶可以通過將雙胞胎床改為雙人床或加床來更改此結果。 結果:2張雙人床和1張加床。 雙人間附有加床。

我需要一些幫助才能在JavaScript中使用此功能。 到目前為止,我設法進行了系統計算,但是當嘗試手動進行更改時,會導致計算錯誤。

例如:4名成人和1名兒童; 共5人。 默認值:2張單人床和1張單人間。 用戶更改為1張雙胞胎(因為有一個孩子,必須至少要有1張雙胞胎),單身最多可以容納2個房間,其余1位成人可以選擇1張加床。

我需要一些幫助:

    function cal_rooms()
    {
        var have_extra_bed="<?=$room_have_extra_bed;?>";
        var adult = document.getElementById("adult").value;
        var childbed = document.getElementById("childbed").value;
        var childwbed = document.getElementById("childwbed").value;
        document.getElementById("doubleroom").value="0";
        //var totals1=(parseInt(adult));
        var totals=(parseInt(adult)+parseInt(childbed)+parseInt(childwbed));

        if(adult==0)
        {
            document.getElementById("childbed").disabled=true;
            document.getElementById("childwbed").disabled=true;

            document.getElementById("childbed").value="0";
            document.getElementById("childwbed").value="0";
            document.getElementById("totalperson").value="";
        }
        else
        {
            document.getElementById("childbed").disabled=false;
            document.getElementById("childwbed").disabled=false;

            if(totals>7)
            {
                var newtots=(totals-parseInt(adult));
                alert("Cannot exceed 7!");
                document.getElementById("adult").value=0;

                document.getElementById("childbed").value="0";
                document.getElementById("childwbed").value="0";
                document.getElementById("totalperson").value="";
            }
            else
            {
                document.getElementById("totalperson").value=totals;

                ///rooms
                var numrooms=((parseInt(adult)+parseInt(childbed))/2);
                var new_numrooms=Math.ceil(numrooms);
                var check_numrooms=(parseInt(new_numrooms)-numrooms);
                var single_num=Math.ceil(check_numrooms);
                var twin_num=(parseInt(new_numrooms)-parseInt(single_num));
                var doubleroom=document.getElementById("doubleroom").value;
                var totals_room1=(parseInt(twin_num)+parseInt(doubleroom)+parseInt(single_num));

                if(have_extra_bed=="Y")
                {
                    if(parseInt(adult)>=parseInt(childbed))
                    {

                            var max_single_can_select=(parseInt(adult)-parseInt(childbed));

                            document.getElementById("twin").value=twin_num;
                            document.getElementById("single").value=single_num;
                            document.getElementById("temp_single").value=single_num;
                            document.getElementById("def_single").value=single_num;
                            document.getElementById("max_single").value=max_single_can_select;

                            document.getElementById("extrabed").value="0";
                            document.getElementById("totalroom").value=totals_room1;
                            document.getElementById("totalextra").value="0";
                            document.getElementById("single").disabled=false;
                    }
                    else
                    {
                            document.getElementById("twin").value=twin_num;
                            document.getElementById("extrabed").value=single_num;
                            document.getElementById("single").value="0";
                            document.getElementById("temp_single").value="0";
                            document.getElementById("def_single").value="0";
                            document.getElementById("max_single").value="0";


                            var extra_a=document.getElementById("extrabed").value;
                            var single_a=document.getElementById("single").value;
                            var twin_a=document.getElementById("twin").value
                            var doubleroom=document.getElementById("doubleroom").value;
                            var totals_room1=(parseInt(single_a)+parseInt(twin_a)+parseInt(doubleroom));

                            document.getElementById("totalroom").value=totals_room1;
                            document.getElementById("totalextra").value=extra_a;
                            document.getElementById("single").disabled=true;
                    }
                }
                else
                {
                    if(parseInt(adult)>=parseInt(childbed))
                    {
                            var max_single_can_select=(parseInt(adult)-parseInt(childbed));

                            document.getElementById("twin").value=twin_num;
                            document.getElementById("single").value=single_num;
                            document.getElementById("temp_single").value=single_num;
                            document.getElementById("def_single").value=single_num;
                            document.getElementById("max_single").value=max_single_can_select;


                            document.getElementById("extrabed").value="0";
                            document.getElementById("totalroom").value=totals_room1;
                            document.getElementById("totalextra").value="0";

                            document.getElementById("single").disabled=false;
                            document.getElementById("extrabed").disabled=true;
                    }
                    else
                    {
                        document.getElementById("twin").value=twin_num;
                        document.getElementById("single").value=single_num;
                        document.getElementById("temp_single").value=single_num;
                        document.getElementById("def_single").value=single_num;
                        document.getElementById("max_single").value="0";
                        document.getElementById("extrabed").value="0";
                        document.getElementById("single").disabled=true;
                        document.getElementById("extrabed").disabled=true;

                        var extra_a=document.getElementById("extrabed").value;
                        var single_a=document.getElementById("single").value;
                        var twin_a=document.getElementById("twin").value
                        var doubleroom=document.getElementById("doubleroom").value;
                        var totals_room1=(parseInt(single_a)+parseInt(twin_a)+parseInt(doubleroom));

                        document.getElementById("totalroom").value=totals_room1;
                        document.getElementById("totalextra").value=extra_a;

                    }
                }

                return surcharge();
            }
        }
    }

function cal_single()
    {
    ///Start single function

        var choose_single = document.getElementById("single").value;
        var single_pick = document.getElementById("single_pick").value;
        var extra_pick = document.getElementById("extra_pick").value;

        var checked_for_doubleroom = document.getElementById("temp_double").value;
        var checked_for_single = document.getElementById("temp_single").value;
        var checked_for_def_single = document.getElementById("def_single").value;

        var total_pax_adult = document.getElementById("adult").value;
        var total_pax_childbed = document.getElementById("childbed").value;
        var total_pax_bed = (parseInt(total_pax_adult)+parseInt(total_pax_childbed));


                if (parseInt(total_pax_bed)%2 == 0)
                {
                    ////Even Number

                    //document.getElementById("temp_single").value=choose_single;
                    var temp_twin = document.getElementById("twin").value;
                    var temp_double = document.getElementById("temp_double").value;
                    var temp_single = document.getElementById("temp_single").value;
                    var temp_extra = document.getElementById("temp_extra").value;
                    var total_temp = ((parseInt(temp_twin)*2)+(parseInt(temp_double)*2)+parseInt(temp_single)+parseInt(temp_extra));
                    var new_total_temp = ((parseInt(temp_twin)*2)+(parseInt(temp_double)*2)+parseInt(choose_single)+parseInt(temp_extra));

                    if(total_temp>total_pax_bed)
                    {
                        alert("Total Number of Room Exceed Total number of Pax!");
                        document.getElementById("single").value=temp_single;
                        return false;
                    }
                    else
                    {

                            var def_single=document.getElementById("def_single").value;
                        var doubleroom=document.getElementById("doubleroom").value;
                        var single=document.getElementById("single").value;

                        var adult = document.getElementById("adult").value;
                        var childbed = document.getElementById("childbed").value;

                        ///rooms
                        var numrooms=((parseInt(adult)+parseInt(childbed))/2);
                        var new_numrooms=Math.ceil(numrooms);
                        var check_numrooms=(parseInt(new_numrooms)-numrooms);
                        var single_num=Math.ceil(check_numrooms);
                        var twin_num=(parseInt(new_numrooms)-parseInt(single_num));

                        var max_sing=document.getElementById("max_single").value;

                        if(single>max_sing)
                        {
                            if(max_sing==0)
                            {
                                alert("Single cannot been select");
                                document.getElementById("single").value=def_single;
                                return false;
                            }
                            else
                            {
                                alert("Single cannot exceed "+max_sing);
                                document.getElementById("single").value=def_single;
                                return false;
                            }
                        }
                        else
                        {
                            if(single==0)
                            {
                                return false;
                            }
                            else
                            {
                                var latest_twin_num=(parseInt(twin_num)-parseInt(single));
                                var min_twin_sh=childbed;

                                if(parseInt(latest_twin_num)<=parseInt(min_twin_sh))
                                {
                                    var new_latest_twin=min_twin_sh;
                                }
                                else
                                {
                                    var new_latest_twin=latest_twin_num;
                                }

                                    document.getElementById("single").value=single;
                                    document.getElementById("twin").value=new_latest_twin;
                                    document.getElementById("max_single").value=new_latest_twin;
                                    document.getElementById("temp_single").value=single;
                                    document.getElementById("single_pick").value="Y";

                                        var extra_a=document.getElementById("extrabed").value;
                                        var single_a=document.getElementById("single").value;
                                        var twin_a=document.getElementById("twin").value
                                        var doubleroom=document.getElementById("doubleroom").value;
                                        var totals_room1=(parseInt(single_a)+parseInt(twin_a)+parseInt(doubleroom));

                                        document.getElementById("totalroom").value=totals_room1;
                                        document.getElementById("totalextra").value=extra_a;

                            }
                        }


                        document.getElementById("single").disabled=true;
                    }
                }
                else
                {

嘗試使用javsacript函數模數x= y%2這將為您提供所需的確切空間,如果有剩余空間,您可以為其添加更多空間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM