【JavaWeb项目】——外卖订餐系统之js部分、项目总结
【摘要】 【JavaWeb项目】——外卖订餐系统之js部分、项目总结
🎯JS部分
😎用户注册表单提交部分
🎈代码
🎈解析
这段JavaScript代码定义了一个名为 validateForm 的函数,它用于验证用户在注册表单中输入的密码是否一致:
-
函数定义:
function validateForm() { ... }: 定义了一个名为validateForm的函数,没有接受任何参数。
-
获取表单数据:
var password1 = document.forms["registerForm"]["password1"].value;: 获取名为registerForm的表单中名为password1的输入字段的值。var password2 = document.forms["registerForm"]["password2"].value;: 获取同样表单中名为password2的输入字段的值。
-
密码比较:
if (password1 !== password2) { ... }: 使用!==操作符检查两次输入的密码是否不相同。
-
错误提示:
alert("两次密码不同,请重新输入");: 如果两次密码不同,则弹出一个警告框提示用户。
-
阻止表单提交:
return false;: 如果密码不一致,函数返回false,这将阻止表单提交。
-
允许表单提交:
return true;: 如果密码一致,函数返回true,这允许表单提交。
这个 validateForm 函数通常在注册表单的 onsubmit 事件中被调用,以确保用户两次输入的密码相同。这是一种常见的前端验证手段,用于增强用户体验和减少无效的表单提交。然而,为了安全性,后端验证也是必需的,因为前端验证可以被绕过。
🎈演示
😎店铺分类模块
🎈代码
🎈解析
这段JavaScript代码是一个用于处理网页上菜单展开和收起功能的脚本:
-
获取一级菜单元素:
let menuOne = document.querySelectorAll('.menuOne > li');: 使用querySelectorAll获取所有一级菜单元素(.menuOne类下的li元素)。
-
类数组转换:
menuOne = [...menuOne];: 将querySelectorAll返回的类数组对象转换为真正的数组,以便于使用数组的forEach方法。
-
定义菜单索引变量:
let menuIndex = NaN;: 定义一个变量menuIndex用于存储当前展开的二级菜单的索引,初始值为NaN表示没有菜单展开。
-
遍历一级菜单:
menuOne.forEach((item, index) => { ... }): 使用forEach方法遍历每个一级菜单项。
-
绑定索引和事件监听器:
item.index = index;: 将当前遍历到的索引绑定到菜单项上。item.addEventListener('click', function () { ... }): 为每个菜单项添加点击事件。
-
点击事件处理:
- 在点击事件中,首先获取二级菜单元素和相关的子菜单元素。
const menuTwo = this.lastElementChild;: 获取当前点击的一级菜单项下的二级菜单(ul元素)。const menu = menuTwo.children;: 获取二级菜单的所有子项。
-
判断是否首次展开:
- 如果
menuIndex是NaN,表示没有菜单是展开状态,将点击的二级菜单展开,并记录索引。
- 如果
-
切换菜单显示:
- 如果点击的不是当前索引的菜单项,将上一个展开的菜单收起,并展开当前点击的菜单。
- 如果点击的是当前索引的菜单项,根据二级菜单的高度判断是展开还是收起。
-
调整菜单高度:
menuTwo.style.height = menu.length * 41 + 'px';: 根据二级菜单项的数量和每个项的高度(假设每个项40px,加上边框1px,共41px)设置高度,实现展开效果。menuTwo.style.height = 0;: 将高度设置为0,实现收起效果。
-
更新索引:
menuIndex = this.index;: 更新menuIndex为当前点击的菜单项的索引。
这段代码实现了一个简单的手风琴式菜单效果,每次只能展开一个二级菜单,点击其他一级菜单项可以切换当前展开的菜单。代码中使用了NaN来标识初始状态,以及通过比较索引来决定是展开还是收起菜单。
🎈演示
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者


评论(0)