使用 JavaScript 构建房间成本估算器
这个估算器会做什么?
- 允许用户选择房间类型(大床、特大号床或套房)。
- 让用户选择他们想要入住的晚数。
- 应用任何折扣(例如 AAA/高级或军事)。
- 计算房间费用、应用税费并显示总额。
STEP_1:处理表单提交
首先,我们需要捕获用户在表单中提交的内容。我们将使用 JavaScript 来防止页面在提交表单时刷新,从而使我们能够在不丢失输入的情况下处理计算。
document.getElementById("costForm").addEventListener("submit", function (event) { event.preventDefault(); // Prevents the page from reloading // 1. Get the values from the form const name = document.getElementById("name").value; const checkInDate = document.getElementById("checkInDate").value; const nights = parseInt(document.getElementById("nights").value); const roomType = document.querySelector('input[name="roomType"]:checked').value; const discount = document.querySelector('input[name="discount"]:checked').value; const adults = parseInt(document.getElementById("adults").value); const children = parseInt(document.getElementById("children").value); // 2. Check room occupancy const maxOccupancy = getMaxOccupancy(roomType); if (adults + children > maxOccupancy) { document.getElementById("messageDiv").innerText = `The room you selected cannot hold your group. Max occupancy is ${maxOccupancy}.`; return; } // 3. Clear previous messages and calculate the cost document.getElementById("messageDiv").innerText = ""; calculateCost(roomType, checkInDate, nights, discount); });
它的作用:
- 表单提交:表单监听“提交”事件,event.preventDefault() 会阻止页面刷新,以便我们可以使用 JavaScript 处理输入。
- 获取表单值:我们从表单中检索值,例如用户姓名、入住天数、房间类型等
- 房间入住率检查:我们使用一个函数来检查客人人数是否超过房间的最大入住率。如果是这样,我们会显示一条错误消息。
STEP_2:检查最大入住率
现在,让我们创建一个函数来检查每种房型可以入住的人数。这个功能很重要,因为酒店房间对可容纳的客人数量有限制。
function getMaxOccupancy(roomType) { if (roomType === "queen") { return 5; // Queen rooms can hold up to 5 people } else if (roomType === "king") { return 2; // King rooms can hold up to 2 people } else if (roomType === "suite") { return 6; // 2-Bedroom Suites can hold up to 6 people } }
它的作用:
-
房间类型:每种房型(大床房、特大床房、套房)都有不同的最大入住人数。
- 大床房:最多入住5人。
- 特大号床间:最多可入住 2 人。
- 套房:最多可入住 6 人。
- 如果成人儿童的数量超过限制,我们会显示错误并停止计算。
STEP_3:根据日期计算房价
接下来,我们根据入住日期和房间类型计算每晚房价。旺季(六月至八月)的费率较高,其余时间则较低。
document.getElementById("costForm").addEventListener("submit", function (event) { event.preventDefault(); // Prevents the page from reloading // 1. Get the values from the form const name = document.getElementById("name").value; const checkInDate = document.getElementById("checkInDate").value; const nights = parseInt(document.getElementById("nights").value); const roomType = document.querySelector('input[name="roomType"]:checked').value; const discount = document.querySelector('input[name="discount"]:checked').value; const adults = parseInt(document.getElementById("adults").value); const children = parseInt(document.getElementById("children").value); // 2. Check room occupancy const maxOccupancy = getMaxOccupancy(roomType); if (adults + children > maxOccupancy) { document.getElementById("messageDiv").innerText = `The room you selected cannot hold your group. Max occupancy is ${maxOccupancy}.`; return; } // 3. Clear previous messages and calculate the cost document.getElementById("messageDiv").innerText = ""; calculateCost(roomType, checkInDate, nights, discount); });
它的作用:
- 日期计算:我们使用 JavaScript Date 对象从入住日期中提取月份。
-
旺季(六月至八月):这几个月的价格较高。
- 大号床间和特大号床间:每晚 250 美元。
- 套房:每晚 350 美元。
-
淡季(一年中的剩余时间):价格较低。
- 大号床间和特大号床间:每晚 150 美元。
- 套房:每晚 210 美元。
STEP_4:计算总成本
最后,我们计算一下住宿的总费用。我们应用所有折扣,然后加税以获得最终总额。
function getMaxOccupancy(roomType) { if (roomType === "queen") { return 5; // Queen rooms can hold up to 5 people } else if (roomType === "king") { return 2; // King rooms can hold up to 2 people } else if (roomType === "suite") { return 6; // 2-Bedroom Suites can hold up to 6 people } }
它的作用:
- 房价:我们使用 getRoomRate() 函数计算每晚的房价。
- 总房价:我们将房价乘以住宿天数,得到折扣前的总费用。
- 应用折扣:如果用户选择AAA/高级或军事,我们将应用折扣(分别为10%或20%)。
- 税费:我们在折扣房费的基础上加收 12% 的税费。
- 显示结果:页面上显示总费用(包含明细)供用户查看。
结论
- 1.获取表单值:当用户提交表单时,代码首先从表单中获取所有输入值(姓名、入住日期、入住天数等)。
- 2.验证入住率:脚本检查客人数量是否超过房间的最大入住率,如果超过则显示错误。
- 3.计算房间费用:根据所选的房间类型和入住日期,脚本计算每晚房价,将其乘以住宿天数,然后应用任何折扣。
- 4.添加税:脚本在折扣房费的基础上添加 12% 的税。
- 5.显示结果:最终成本(包含明细)在结果部分中向用户显示。
就是这样!我们使用 JavaScript 构建了一个简单但实用的 房间成本估算器。
我的此代码的 GitHub 存储库在这里!包括页面的基本 HTML 和 Bootstrap 样式
作者
桑尼·柯
创意开发者和设计师
前端开发学生 |团结起来
以上是使用 JavaScript 构建房间成本估算器的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

不同JavaScript引擎在解析和执行JavaScript代码时,效果会有所不同,因为每个引擎的实现原理和优化策略各有差异。1.词法分析:将源码转换为词法单元。2.语法分析:生成抽象语法树。3.优化和编译:通过JIT编译器生成机器码。4.执行:运行机器码。V8引擎通过即时编译和隐藏类优化,SpiderMonkey使用类型推断系统,导致在相同代码上的性能表现不同。

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

从C/C 转向JavaScript需要适应动态类型、垃圾回收和异步编程等特点。1)C/C 是静态类型语言,需手动管理内存,而JavaScript是动态类型,垃圾回收自动处理。2)C/C 需编译成机器码,JavaScript则为解释型语言。3)JavaScript引入闭包、原型链和Promise等概念,增强了灵活性和异步编程能力。

JavaScript在Web开发中的主要用途包括客户端交互、表单验证和异步通信。1)通过DOM操作实现动态内容更新和用户交互;2)在用户提交数据前进行客户端验证,提高用户体验;3)通过AJAX技术实现与服务器的无刷新通信。

JavaScript在现实世界中的应用包括前端和后端开发。1)通过构建TODO列表应用展示前端应用,涉及DOM操作和事件处理。2)通过Node.js和Express构建RESTfulAPI展示后端应用。

理解JavaScript引擎内部工作原理对开发者重要,因为它能帮助编写更高效的代码并理解性能瓶颈和优化策略。1)引擎的工作流程包括解析、编译和执行三个阶段;2)执行过程中,引擎会进行动态优化,如内联缓存和隐藏类;3)最佳实践包括避免全局变量、优化循环、使用const和let,以及避免过度使用闭包。

Python和JavaScript在社区、库和资源方面的对比各有优劣。1)Python社区友好,适合初学者,但前端开发资源不如JavaScript丰富。2)Python在数据科学和机器学习库方面强大,JavaScript则在前端开发库和框架上更胜一筹。3)两者的学习资源都丰富,但Python适合从官方文档开始,JavaScript则以MDNWebDocs为佳。选择应基于项目需求和个人兴趣。

Python和JavaScript在开发环境上的选择都很重要。1)Python的开发环境包括PyCharm、JupyterNotebook和Anaconda,适合数据科学和快速原型开发。2)JavaScript的开发环境包括Node.js、VSCode和Webpack,适用于前端和后端开发。根据项目需求选择合适的工具可以提高开发效率和项目成功率。
