JavaScrip——BOM编程
一、BOM核心对象与导航控制
1. location对象:页面跳转与刷新
// 跳转到指定URL
location.href = "https://example.com"; // 刷新当前页面
location.reload(); // 示例:点击按钮跳转
document.querySelector("#btn").onclick = () => {location.href = "detail.html";
};
2. history对象:历史记录管理
history.back(); // 返回上一页
history.forward(); // 前进下一页
history.go(-2); // 后退两步// 示例:返回主页的链接
<a href="javascript:history.back()">返回主页面</a>
二、DOM元素访问三剑客
| 方法 | 作用域 | 返回类型 | 适用场景 |
|---|---|---|---|
getElementById() | 单个元素 | HTMLElement | 精确匹配ID的元素 |
getElementsByName() | 同名元素集合 | NodeList | 表单元素批量操作 |
getElementsByTagName() | 标签元素集合 | HTMLCollection | 操作同类标签元素 |
实战示例:
// 批量获取输入框内容
function collectInputs() {const inputs = document.getElementsByTagName("input");let values = [];for (let input of inputs) {values.push(input.value);}return values.join(", ");
}// 操作同名复选框
function toggleCheckboxes(checked) {const checkboxes = document.getElementsByName("product");checkboxes.forEach(checkbox => checkbox.checked = checked);
}
三、元素显示与隐藏控制
1. visibility vs display
| 属性 | 特点 | 适用场景 |
|---|---|---|
visibility | 隐藏元素但保留占位空间 | 需要保持布局稳定时 |
display | 完全移除元素不占空间 | 动态切换显示状态 |
切换菜单显示:
function toggleMenu(menuId) {const menu = document.getElementById(menuId);menu.style.display = menu.style.display === "none" ? "block" : "none";
}
2. 树形菜单实现
<ul id="mainMenu"><li onclick="toggleMenu('subMenu1')">前端技术</li><ul id="subMenu1" style="display:none"><li>HTML</li><li>CSS</li></ul>
</ul>
运行 HTML
四、TAB切换效果开发
实现思路:
-
通过
display:none隐藏所有内容区块 -
使用事件监听触发切换
-
动态修改目标元素的
display属性
代码示例:
function switchTab(tabId) {// 隐藏所有内容const tabs = document.getElementsByClassName("tab-content");for (let tab of tabs) {tab.style.display = "none";}// 显示目标内容document.getElementById(tabId).style.display = "block";
}
<div class="tabs"><button onclick="switchTab('tab1')">商品详情</button><button onclick="switchTab('tab2')">用户评价</button>
</div>
<div id="tab1" class="tab-content">...</div>
<div id="tab2" class="tab-content" style="display:none">...</div>
运行 HTML
五、复选框全选功能
实现原理:
-
获取所有目标复选框
-
根据全选框状态批量设置
function toggleAll(checkbox) {const items = document.getElementsByName("product");items.forEach(item => item.checked = checkbox.checked);
}
<input type="checkbox" id="checkAll" onchange="toggleAll(this)">
<label>全选</label><div class="products"><input type="checkbox" name="product"> 商品A<input type="checkbox" name="product"> 商品B
</div>
运行 HTML
六、最佳实践与性能优化
-
减少DOM操作:缓存查询结果
// 错误写法:每次循环都查询DOM for (let i=0; i<10; i++) {document.getElementById("item").style.color = "red"; }// 正确写法:缓存元素 const item = document.getElementById("item"); for (let i=0; i<10; i++) {item.style.color = "red"; } -
事件委托优化:
document.querySelector(".tab-bar").addEventListener("click", e => {if (e.target.tagName === "BUTTON") {switchTab(e.target.dataset.tab);} }); -
现代API替代方案:
// 使用querySelectorAll简化查询 document.querySelectorAll(".product-checkbox");// 使用classList操作样式 element.classList.toggle("active");
相关文章:
JavaScrip——BOM编程
一、BOM核心对象与导航控制 1. location对象:页面跳转与刷新 // 跳转到指定URL location.href "https://example.com"; // 刷新当前页面 location.reload(); // 示例:点击按钮跳转 document.querySelector("#btn").onclick () &…...
机器学习 分类算法
【实验名称】 实验:分类算法 【实验目的】 1.了解分类算法理论基础 2.平台实现算法 3. 编程实现分类算法 【实验原理】 分类(Categorization or Classification)就是按照某种标准给对象贴标签(label),再根据标签来区分归类。 【实验环境】 OS:Ubuntu16.0…...
【leetcode100】每日温度
1、题目描述 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例 1: 输…...
<贪心算法>
前言:在主包还没有接触算法的时候,就常听人提起“贪心”,当时是layman,根本不知道说的是什么,以为很难呢,但去了解一下,发现也不过如此嘛(bushi),还以为是什么高级东西呢…...
基于银河麒麟桌面服务器操作系统的 DeepSeek本地化部署方法【详细自用版】
一、3种方式使用DeepSeek 1.本地部署 服务器操作系统环境进行,具体流程如下(桌面环境步骤相同): 本例所使用银河麒麟高级服务器操作系统版本信息: (1)安装ollama 方式一:按照ollama官网的下载指南,执行如下命令: curl -fsSL https://ollama.com/install.sh | sh方…...
「2025最新版React+Ant Design+Router+TailwindCss全栈攻略:从零到实战,打造高颜值企业级应用
一站式掌握最新技术栈!手把手教你配置路由、集成UI组件库、高效开发秘籍大公开 ReactAntrouteraxiosmocktailwind css等组合安装使用教程 官网:React Native 中文网 使用React来编写原生应用的框架 一,安装 npx create-react-app my-app …...
Ubuntu 24.04.2 LTS 系统安装python,创建虚拟环境
在 Ubuntu 24.04.2 LTS 系统中,系统本身自带了 Python 3,不过你还是可以按照下面的步骤来安装和配置 Python 环境。 1. 检查系统自带的 Python 版本 在终端中输入以下命令查看系统自带的 Python 版本: python3 --version如果显示了 Python…...
redis7.0搭建redis-cluster集群部署实战
环境 基于3台centos服务 host节点1端口节点2端口master70007001slave170007001slave270007001 安装redis,以及环境准备 安装可以参考https://blog.csdn.net/tao1992/article/details/132614567 安装路径设置了/usr/local/redis 分别在3台服务器上执行 #配置文…...
CMake学习--如何在CMake中编译静态库、动态库并在主程序中调用
目录 一、背景知识二、使用方法(一)编译静态库(二)编译动态库(三)在主程序中调用库 三、总结 一、背景知识 在C/C开发中,库(Library)是预先编译好的代码集合,…...
安美数字酒店宽带运营系统存在SQL注入漏洞
免责声明:本号提供的网络安全信息仅供参考,不构成专业建议。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我联系,我将尽快处理并删除相关内容。 漏洞描述 安美数字酒店宽带运营系统的lang…...
中级:Git面试题全攻略
一、引言 在现代软件开发中,Git作为分布式版本控制系统,被广泛应用于代码管理与团队协作。面试官通过Git相关问题,考察候选人对版本控制的基本概念、操作流程以及解决实际问题的能力。本文将深入解读Git的基本操作、分支管理、冲突解决等常见…...
ubuntu18 server版花屏问题
新搞了一台dellT150的塔式服务器,装的ubuntu18 server版。 开机后遇到花屏,或者卡在开机界面的问题,和售后技术沟通这个情况是ubuntu自带的显卡驱动包兼容问题。需要做如下设置: 解决: 1.开机,连续按下e…...
基于神经网络的肾脏疾病预测模型
构建一个基于神经网络的肾脏疾病预测模型 1. 数据预处理 加载数据:读取 kidney_disease.csv 文件,加载患者医疗数据。删除冗余特征:移除与预测目标无关的列(如 al, su 等),保留关键特征(如…...
Oracle常用高可用方案(10)——RAC
10.2. RAC 10.2.1. 概念 RAC,Real Application Cluster的缩写,业界就称为RAC。RAC最早出现于2001年发布的Oracle 9i版本,之前的版本中,也有类似的产品或技术,叫做OPS,即Oracle Parallel Server的缩写。基于多方面的因素,Oracle 9i之前的类似产品或技术并没有得到广泛应…...
JavaScript基础-移动端常用开发插件
在移动Web开发中,为了提升开发效率和用户体验,开发者通常会依赖于一些成熟的JavaScript插件。这些插件封装了复杂的功能,使得实现常见的交互效果变得更加简单快捷。本文将介绍几款广泛使用的移动端开发插件,并通过具体的示例展示它…...
I/O多路复用 + Reactor和Proactor + 一致性哈希
网络系统 1. I/O多路复用1)原始Socket模型通信方式2)多进程模型3)多线程模型4)I/O多路复用select/pollepoll边缘触发和水平触发 2. Reactor和Proactor1)Reactor模式2)Reactor模式四种方案3)单Re…...
解决小程序video控件在真机和上线后黑屏不播放问题
小程序上线后,mp4格式的视频无法点击是黑屏,但是测试得时候在微信开发者工具中能够打开正常播放 原因:编码格式不能是vp9 微信开发者工具本地设置中把这个打开勾选。 排查:可以换一个视频尝试能不能真机播放,如果能&a…...
js中判断对象是否包含某个属性(元素)
在JavaScript中,判断对象是否包含某个属性(元素)主要有以下几种方法,根据具体需求选择合适的方式: 1. 使用 in 运算符 作用:检查对象自身及原型链上是否存在指定属性。 示例: javascript cons…...
数据库6(数据库指令)
之前所学的指令均为查找指令,即select相关语句 接下来的语句是增删改查的其他三部分,即增删改 1.删除 删除操作是三个操作中较为简单的,因为它只需要考虑数据的完整性 在实验时可以用表的复件来操作,防止操作不当导致数据库被…...
[C++面试] 智能指针面试点(重点)续4
[C面试] RAII资源获取即初始化(重点)-CSDN博客 [C面试] 智能指针面试点(重点)-CSDN博客 [C面试] 智能指针面试点(重点)续1-CSDN博客 [C面试] 智能指针面试点(重点)续2-CSDN博客 …...
java项目分享-分布式电商项目附软件链接
今天来分享一下github上最热门的开源电商项目安装部署,star 12.2k,自行安装部署历时两天,看了这篇文章快的话半天搞定!该踩的坑都踩完了,软件也打包好了就差喂嘴里。 项目简介 mall-swarm是一套微服务商城系统…...
16变量命名风格
给变量/函数/文件/类 起名字, 非常有讲究的~~ 1.起的名字要有描述性.不要使用 abc,xyz 这种比较无规律的名字来描述 2.如果名字比较长,由多个单词构成的,就需要使用适当的方式来进行区分不同单词 C中,偏好使用_来进行单词的分割. 形如: student_count(变量) unordered_map(stl容…...
【LVS】负载均衡群集部署(DR模式)
部署前IP分配 DR服务器:192.168.166.101 vip:192.168.166.100 Web服务器1:192.168.166.104 vip:192.168.166.100 Web服务器2:192.168.166.107 vip:192.168.166.100 NFS服务器:192.168.166.108 …...
链表的操作-反转链表
链表 160相交链表 代码 class Solution { public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {ListNode* h1headA;ListNode* h2headB;while(h1&&h2){if(h1!h2){h1h1->next;h2h2->next;}else{return h1;}}if(h1nullptr){h1headB;}else{h…...
Linux安装Cmake (Centos 7.9)
cmake安装 这个虽然已经更新到了4.0.0版本了,但是我们要用3.5版本的,因为这个比较稳定 官方地址:https://github.com/Kitware/CMake/releases/tag/v3.5.0,选择那个cmake-3.5.0-Linux-x86_64.tar.gz下载, 首先解压文…...
Node.js v22.14.0 多平台安装指南:Windows、Linux 和 macOS 详细教程
Node.js作为现代Web开发的基石,持续为开发者带来性能提升和新特性支持。本文将详细介绍在Windows、macOS和Linux系统上安装最新Node.js的多种方法,助您快速搭建高效的JavaScript开发环境。 📦 当前最新版本 截至2025年4月,Node.…...
Netty源码—10.Netty工具之时间轮一
大纲 1.什么是时间轮 2.HashedWheelTimer是什么 3.HashedWheelTimer的使用 4.HashedWheelTimer的运行流程 5.HashedWheelTimer的核心字段 6.HashedWheelTimer的构造方法 7.HashedWheelTimer添加任务和执行任务 8.HashedWheelTimer的完整源码 9.HashedWheelTimer的总结…...
C++虚函数与抽象类
一、虚函数  **;类中定义不同类中的同名函数的多态的行为**,主要是通过虚函数来实现。 在类的成员函数前加virtual关键字。虚函数是实现包含多态的基础。这里需要说明的是当基类里有虚函数且派生类中重新声明了和基类虚函数相同的函数,那…...
鸿蒙项目笔记(1)
一、核心内容-商城 1、装饰器的拓展使用,基础组件的熟悉。 2、引入基础动画实战,页面属性动画、页面跳转动画、自定义页面翻页等。 3、一次开发,多端部署。 4、本地数据库实战,涉及多种本地数据存储方式。 5、路由导航&#…...
*快排延伸-自省排序
此节是学有余力的人去看,如果没时间,不看也没关系,只要知道代码就可以了! 自省排序的思路是自我侦测和反省,快速排序如果递归深度太深,其算法的效率可能被大幅度削弱,这就需要借助其他的算法进…...
