当前位置: 首页 > news >正文

【前端教程】JavaScript 实现爱好选择与全选/全不选功能

选择爱好,包含全选和全不选效果

功能说明

实现一个爱好选择功能,包含三个复选框(足球、篮球、乒乓球)和一个按钮,点击按钮可以在"全选"和"全不选"状态之间切换。

实现代码

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>爱好选择</title><style>#btn1{height: 35px; width: 100px;}</style><script>window.onload = function() {// 用getElementsByName获取所有爱好复选框var aiHaoShuZu = document.getElementsByName("aiHaoName");// 获取按钮元素(页面中第四个input元素)var anNiuShuZu = document.getElementsByTagName("input")[3];// 为按钮添加点击事件anNiuShuZu.onclick = function() {// 判断按钮当前状态是"全选"还是"全不选"if(this.value == "全选") {// 遍历所有爱好复选框,设置为选中状态for(var i of aiHaoShuZu) {i.checked = "true";}// 将按钮文本改为"全不选"this.value = "全不选";}// 如果当前是"全不选"状态else if(this.value == "全不选") {// 遍历所有爱好复选框,取消选中状态for(var i of aiHaoShuZu) {i.checked = "";}// 将按钮文本改回"全选"this.value = "全选";}}}</script>
</head>
<body><input type="checkbox" name="aiHaoName" />足球<input type="checkbox" name="aiHaoName" />篮球<input type="checkbox" name="aiHaoName" />乒乓球<input type="button" value="全选"  />
</body>
</html>

关键技术点解析

  1. 元素获取方法

    • 使用getElementsByName("aiHaoName")获取所有爱好复选框,因为它们有相同的name属性
    • 使用getElementsByTagName("input")[3]获取按钮元素,通过索引定位到第四个input元素
  2. 复选框状态控制

    • 复选框的checked属性用于控制其选中状态
    • 设置checked = "true"使复选框处于选中状态
    • 设置checked = ""(空字符串)使复选框处于未选中状态
  3. 按钮事件处理

    • 使用onclick为按钮绑定点击事件
    • 通过this.value获取按钮当前的文本值,判断当前状态
    • 根据当前状态切换按钮文本("全选"和"全不选"之间切换)
  4. 循环遍历

    • 使用for...of循环遍历所有复选框元素
    • 在循环中统一设置所有复选框的选中状态

功能扩展思路

  1. 可以添加"反选"功能,即点击后选中所有未选中的选项,取消所有已选中的选项
  2. 可以实时判断是否所有选项都已选中,如果是则自动将按钮文本改为"全不选"
  3. 可以添加选项数量统计功能,显示当前选中了多少项
  4. 可以通过CSS美化界面,让复选框和按钮的样式更美观

这个案例展示了如何通过JavaScript操作表单元素,特别是复选框的状态控制,是表单交互中常见的功能实现方式。

http://www.xdnf.cn/news/1467685.html

相关文章:

  • 硬件基础:串口通信
  • P1106 删数问题
  • 鼓励员工提出建议,激发参与感——制造企业软件应用升级的密钥
  • 02-Media-5-mp4demuxer.py 从MP4文件中提取视频和音频流的示例
  • 敏捷开发-Scrum(上)
  • 硬件(三) 通信方式、串口通信
  • K8S-Pod(上)
  • 2025国赛C题创新论文+代码可视化 NIPT 的时点选择与胎儿的异常判定
  • 与优秀者同行,“复制经验”是成功的最快捷径
  • CAD【xplode】和【explode】功能的区别
  • 电磁波成像(X射线、CT成像)原理简介
  • 【AI产品思路】AI能力展示中心:产品设计与体验优化方案
  • shell简单使用(-)判断
  • 在Windows中已经启动的容器(比如xinference),如何设置让其在每次Docker启动时能自动启动
  • Java对象在内存中的布局详解
  • 【mysql】SQL查询全解析:从基础分组到高级自连接技巧
  • 如何将联系人从 iPhone 转移到 Redmi 手机
  • 亲戚关系计算器,秒懂全家称呼!
  • 基于YOLO目标检测模型的视频推理GUI工具
  • 超越自动化:为什么说供应链的终局是“AI + 人类专家”的混合智能?
  • Web服务与Nginx详解
  • 【服务器】英伟达M40显卡风冷方案心得
  • Git 工具的「安装」及「基础命令使用」
  • 从零到上线:Docker、Docker Compose 与 Runtime 安装部署全指南(含实战示例与应用场景)
  • 小团队如何高效完成 uni-app iOS 上架,从分工到工具组合的实战经验
  • DL3382P6平替RClamp3382P.TCT
  • JavaWeb —— 异常处理
  • iPhone17全系优缺点分析,加持远程控制让你的手机更好用!
  • Ubuntu 18.04 上升级 gcc 到 9.4
  • 敏捷开发-Scrum(下)