news 2026/6/1 15:13:01

17.从零开始学JS:querySelector 获取元素与事件监听实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
17.从零开始学JS:querySelector 获取元素与事件监听实战

目录

一、JavaScript(WebAPI)

1. WebAPI 背景知识

2. 什么是 API

二、DOM 基本概念

1. 什么是 DOM

2. DOM 树

三、获取元素

1. querySelector

2. querySelectorAll

四、事件初识

1. 基本概念

2. 事件三要素

3. 点击事件

五、键盘按下事件 01--onkeydown

六、键盘按下事件 02--onkeydown

七、键盘按下事件 03--onkeypress

八、键盘按下事件 04--onkeyup

九、键盘按下事件 05


一、JavaScript(WebAPI)

1. WebAPI 背景知识

什么是 WebAPI

前面学习的 JS 分成三个大的部分

  • ECMAScript: 基础语法部分

  • DOM API: 操作页面结构

  • BOM API: 操作浏览器

WebAPI 就包含了 DOM + BOM.

这个是 W3C 组织规定的。(和制定 ECMAScript 标准的大佬们不是一伙人)。

前面学的 JS 基础语法主要学的是 ECMAScript, 这让我们建立基本的编程思维. 相当于练武需要先扎马步.

但是真正来写一个更加复杂的有交互式的页面, 还需要 WebAPI 的支持. 相当于各种招式.

2. 什么是 API

API 是一个更广义的概念. 而 WebAPI 是一个更具体的概念, 特指 DOM+BOM

所谓的 API 本质上就是一些现成的函数/对象, 让程序猿拿来就用, 方便开发.

相当于一个工具箱. 只不过程序猿用的工具箱数目繁多, 功能复杂.

二、DOM 基本概念

1. 什么是 DOM

DOM 全称为 Document Object Model.

W3C 标准给我们提供了一系列的函数, 让我们可以操作:

  • 网页内容

  • 网页结构

  • 网页样式

2. DOM 树

一个页面的结构是一个树形结构, 称为 DOM 树.

树形结构在数据结构阶段会介绍. 就可以简单理解成类似于“家谱”这种结构

重要概念:

  • 文档:​ 一个页面就是一个文档, 使用 document 表示.

  • 元素:​ 页面中所有的标签都称为元素. 使用 element 表示.

  • 节点:​ 网页中所有的内容都可以称为节点(标签节点, 注释节点, 文本节点, 属性节点等). 使用 node 表示.

这些文档等概念在 JS 代码中就对应一个个的对象.

所以才叫“文档对象模型”.

三、获取元素

这部分工作类似于 CSS 选择器的功能.

1. querySelector

这个是 HTML5 新增的, IE9 及以上版本才能使用.

前面的几种方式获取元素的时候都比较麻烦. 而使用 querySelector 能够完全复用前面学过的 CSS 选择器知识, 达到更快捷更精准的方式获取到元素对象.

var element = document.querySelector(selectors);
  • selectors 包含一个或多个要匹配的选择器的 DOM字符串domString。该字符串必须是有效的 CSS选择器字符串;如果不是,则引发 SYNTAX_ERR 异常

  • 表示文档中与指定的一组CSS选择器匹配的第一个元素的 html元素 Element 对象.

  • 如果您需要与指定选择器匹配的所有元素的列表,则应该使用 querySelectorAll()

  • 可以在任何元素上调用,不仅仅是 document。调用这个方法的元素将作为本次查找的根元素

正因为参数是选择器, 所以一定要通过特殊符号指定是哪种选择器.

例如.box是类选择器,#star是 id 选择器 等.

<div class="box">abc</div> <div id="id">def</div> <h3><span><input type="text"></span></h3> <script> var elem1 = document.querySelector('.box'); console.log(elem1); var elem2 = document.querySelector('#id'); console.log(elem2); var elem3 = document.querySelector('h3 span input'); console.log(elem3); </script>

2. querySelectorAll

使用 querySelectorAll 用法和上面类似.

<div class="box">abc</div> <div id="id">def</div> <script> var elems = document.querySelectorAll('div'); console.log(elems); </script>
<body> <div class="box1">box1</div> <div class="box2">box2</div> <h3><span><input type="text"></span></h3> </body> <script> console.log(document.querySelector('.box1')) console.log(document.querySelector('span').querySelector('input')) console.log(document.querySelectorAll('div')) </script>

四、事件初识

1. 基本概念

JS 要构建动态页面, 就需要感知到用户的行为.

用户对于页面的一些操作(点击, 选择, 修改等) 操作都会在浏览器中产生一个个事件, 被 JS 获取到, 从而进行更复杂的交互操作.

浏览器就是一个哨兵, 在侦查敌情(用户行为). 一旦用户有反应(触发具体动作), 哨兵就会点燃烽火台的狼烟(事件), 后方就可以根据狼烟来决定下一步的对敌策略.

2. 事件三要素

  1. 事件源:​ 哪个元素触发的

  2. 事件类型:​ 是点击, 选中, 还是修改?

  3. 事件处理程序:​ 进一步如何处理, 往往是一个回调函数.

3. 点击事件

<body> <input type="button" value="这是一个按钮"> </body> <script> // 事件源 let button = document.querySelector('input') // 绑定事件类型(点击事件) // 函数设定了事件处理程序 button.onclick = function() { alert("Hello") } </script>

这个函数我们没有主动去调用他,

他能被调用是因为当浏览器监听到了这个点击事件后,

浏览器会自动调用function这个匿名函数

五、键盘按下事件 01--onkeydown

<body> <!-- <input type="button" value="这是一个按钮"> --> <input type="text"> </body> <script> let input = document.querySelector('input') input.onkeydown = function() { console.log("键盘正在按下") } </script>

六、键盘按下事件 02--onkeydown

<body> <!-- <input type="button" value="这是一个按钮"> --> <input type="text"> </body> <script> // 事件源 let input = document.querySelector('input') input.onkeydown = function(event) { console.log("键盘正在按下"); let a = event.keyCode; let b = String.fromCharCode(a) console.log(b) } </script>

onkeydown不区分大小写

七、键盘按下事件 03--onkeypress

onkeypress区分大小写

<body> <input type="text" > </body> <script> // // 事件源 // let button = document.querySelector('input') // // 绑定事件类型(点击事件) // // 函数设定了事件处理程序 // button.onclick = function() { // alert("Hello") // } // 事件源 let input = document.querySelector('input') input.onkeypress = function(event) { console.log("键盘正在按下"); let a = event.keyCode; let b = String.fromCharCode(a) console.log(b) } </script>

八、键盘按下事件 04--onkeyup

<body> <input type="text" onkeyup="myOnkeyUp()"> </body> <script> function myOnkeyUp() { console.log("按键被抬起") } </script>

九、键盘按下事件 05

注释:不是所有键(例如 ALT、CTRL、SHIFT、ESC)都会在所有浏览器中触发 onkeypress 事件。如需只检测用户是否按下了某个键,请改用 onkeydown 事件,因为它适用于所有键。

<body> <input type="text" onkeyup="myOnkeyUp()"> </body> <script> // 事件源 let input = document.querySelector('input') input.onkeydown = function(event) { // 如果按键按下的是shift此时弹出一个弹窗,提示shift被按下 if(event.shiftKey) { alert("shift键被按下") } if(event.altKey) { alert("alt键被按下") } } function myOnkeyUp() { console.log("按键被抬起") } </script>
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/1 15:08:02

基于ESP32与MPU6050的智能啤酒发酵监测系统DIY指南

1. 项目概述&#xff1a;从传统酿造到智能监测的跨越对于家庭酿酒爱好者来说&#xff0c;发酵过程就像一场需要耐心等待的“黑箱实验”。你投入了麦芽汁&#xff0c;加入了酵母&#xff0c;然后就是长达一两周的等待。传统上&#xff0c;我们依赖玻璃比重计&#xff0c;每天小心…

作者头像 李华
网站建设 2026/6/1 15:02:59

解锁Windows安卓应用安装:APK-Installer技术解析与实战指南

解锁Windows安卓应用安装&#xff1a;APK-Installer技术解析与实战指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在Windows生态中运行安卓应用一直是技术爱好者和…

作者头像 李华
网站建设 2026/6/1 14:59:56

告别激活烦恼:3分钟掌握Windows和Office智能激活方案

告别激活烦恼&#xff1a;3分钟掌握Windows和Office智能激活方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 你是否曾经因为Windows系统突然弹出激活提示而中断工作&#xff1f;是否遇到过O…

作者头像 李华
网站建设 2026/6/1 14:58:44

【字节跳动】安全防护机制:实现熔丝保护、密钥轮换、硬件黑名单等安全措施,如权重补丁需通过34轮哈希校验(5178)资源管理:会话池支持2048个并发(SESS_POOL_MAX)显存资源闲置释放

本文档详细描述了30个核心模块的系统设计与实现&#xff0c;涵盖会话管理、KV缓存、集群负载均衡、加密体系等关键功能。主要特点包括&#xff1a;安全防护机制&#xff1a;实现熔丝保护、密钥轮换、硬件黑名单等安全措施&#xff0c;如权重补丁需通过34轮哈希校验&#xff08;…

作者头像 李华