【问题标题】:How to take user selected hotel room and multiply by number of days stayed?如何将用户选择的酒店房间乘以入住天数?
【发布时间】:2017-03-25 13:57:12
【问题描述】:

我能够计算入住日期和退房日期之间的差异,以获得入住天数以及退房日期是否早于入住日期。

但是,我正在努力弄清楚如何使用用户选择的房间(标准房、大床房、特大床房、商务房或豪华房),并将该房间每晚的费用乘以在酒店的入住天数。

如果可能的话,我还想使用 type="date" 而不是 datepicker。

<!DOCTYPE html>
<html>
 <head>
    <script>
		function check() {
			var date1 = new Date(document.getElementById('checkin').value);
			var date2 = new Date(document.getElementById('checkout').value);
			var diff = Math.abs(date2.getTime() - date1.getTime());
			var dayDiff = Math.ceil(diff / (1000 * 3600 * 24));  
  
			if (date1 > date2){ 
				alert("Check-out date must be after check-in date!")
			}
			else {
				calculate();
			}	
		}

</script>
<body>
  <form>
	<fieldset>
	  <legend>Reserve Hotel Room</legend>
			Check-In Date:<br>
			<input type="date" id="checkin" name="checkin" required>
			<br><br>
			Check-Out Date:<br>
			<input type="date" id="checkout" name="checkout" required>
			<br><br>
			Room:
			<select id="room" name="room" onchange="report(this.value)">
				<option id="standard" value="50">Standard ($50/night)</option>
				<option id="queen" value="75">Queen ($75/night)</option>
				<option id="king" value="100">King ($100/night)</option>
				<option id="business" value="125">Business ($125/night)</option>
				<option id="deluxe" value="150">Deluxe Suite ($150/night)</option>
			</select>
			<button type="submit" onclick="check()">Submit</button>
			</fieldset>
	  </form>
</body>

【问题讨论】:

  • 这样的东西有用吗?函数计算(); if (document.getElementById("standard") var report = this.value * 50 * dayDiff;
  • 并非所有使用的浏览器都支持输入类型“日期”,因此不实用。您所需要做的就是将天数乘以 room 元素的值:dayDiff * document.getElementById('room').value。您可能应该使用 Math.round 而不是 Math.ceil (检查超出夏令时的范围)

标签: javascript html forms function date


【解决方案1】:

在您的计算函数中

function calculate(dayDiff) {
    var e = document.getElementById("room");
    var amt = e.options[e.selectedIndex].value; //gets selected value. As you have set value as price per night. its easier to calculate the total amount.
    return  dayDiff * parseInt(amt);
}

更新:在弹出框中提醒用户?

在你的检查函数中。

var totalamount = calculate(dayDiff);
alert(totalamount)

【讨论】:

  • 如何让返回值在弹出框中提醒用户?
  • @ChaCol 计算函数返回总金额。检查我是否更新了我的答案
猜你喜欢
  • 1970-01-01
  • 2019-04-27
  • 1970-01-01
  • 1970-01-01
  • 2016-03-29
  • 2013-09-06
  • 2021-07-01
  • 1970-01-01
  • 2020-05-24
相关资源
最近更新 更多