[英]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.