【DOM笔记一】什么是DOM?获取元素的方法有哪些?什么是事件以及事件的三要素包括哪些?

DOM 元素 DOM 元素是构建和操作网页内容的基础。通过 JavaScript,我们可以轻松地访问和修改 DOM 元素,从而实现动态和交互式的网页效果。掌握 DOM 元素的属性、方法和事件处理,对于前端开发者来说至关重要。 阅读详情

1 引入

1.1 JS组成

image-20231215094528374

JS基础 阶段:ECMAScript

  • 只是标准规定的基本语法,做不了常用的网页交互效果

Web APIs 阶段:DOM;BOM

  • Web APIs是W3C组织的标准,可以用来做页面交互功能(需要基于ECMAScript)

1.2 API 和 Web API

  1. APl (Application Programming Interface,应用程序编程接口):

    一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

  2. Web API:

  • 针对浏览器,提供的一套操作 浏览器功能 和 页面元素的API(分别对应BOM和DOM),做页面交互效果。因为Web API很多,因此称为Web APIs。
  • 比如:我们想要浏览器弹出一个警示框,直接使用alert(‘弹出’),alert就是用的API。
  • Web API一般都有输入和输出(函数的传参和返回值),很多都是方法(函数)
  • MDN详细 APl : https://developer.mozilla.org/zh-CN/docs/Web/API

1.3 DOM

概念: 文档对象模型(Document Object Model,简称DOM ) ,是W3C组织推荐的处理可扩展标记语言(HTML或者XML )的标准编程接口。

W3C已经定义了一系列的DOM接口,通过这些DOM接口可以改变网页的内容、结构和样式。

1.4 DOM树

image-20231215150445326

  • 文档:一个页面就是一个文档,DOM中用document表示

  • 元素:页面中的所有标签都是元素,DOM中用element表示

  • 节点:网页中的所有内容都是节点(标签,属性,文本,注释等),DOM中用node表示

  • DOM把以上内容都看作是对象,因此DOM也叫文本对象模型

2 获取元素

DOM主要用来操作元素,操作前要先获取元素。获取页面中元素的方式主要为以下几种:

  • 通过ID获取:document.getElementByld('id')
  • 通过标签名获取:document.getElementsByTagName('li')
  • 通过HTML5新增的方法获取:document.getElementsByClassName('类名');document.querySelectorAll('类名')
  • 获取特殊元素:

2.1 通过ID获取

使用document.getElementByld('id')方法可以获取带有ID的元素对象。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <div id="time">2019-9-9</div>  <!-- 标签有id -->
    <script>
        // 文档页面从上往下加载,得先有标签,再去获取它,因此script写到标签的下面。
        var timer = document.getElementById('time');
        console.log(timer);   // <div id="time">2019-9-9</div>
        console.log(typeof timer);  // object 返回的是元素对象
        console.dir(timer);  // 打印我们返回的元素对象 ,可以更好的查看里面的属性和方法
    </script>
</body>

</html>

2.2 通过标签名获取

使用document.getElementsByTagName('li')获取指定标签名的对象的集合(一个标签可能对应多个元素)

<ul>
    <li>你好!</li>
    <li>你好</li>
    <li>你好</li>
    <li>你好</li>
    <li>你好</li>
</ul>
<ol id="ol">    <!-- 给要获取的元素的父元素设置id -->
    <li>他好</li>     <!-- 获取这个li -->
    <li>他好</li>
    <li>他好</li>
    <li>他好</li>
    <li>他好</li>
</ol>
<script>
    var lis = document.getElementsByTagName('li')
    // 1. 返回的是 获取过来元素对象的集合 以伪数组的形式存储
    console.log(lis)   // 获取了所有的li
    console.log(lis[0])   // <li>你好!</li>
    
    // 2. 用遍历 依次打印里面的元素对象
    for (var i = 0; i < lis.length; i++) {
        console.log(lis[i]);
    }
   
    // 3. 如果页面中只有一个li 返回的还是 伪数组
    // 4. 如果页面中没有li 返回的是 空的伪数组
    
    // 5. 只要ol下的li,可以使用element.getElementsByTagName('标签名'); 父元素必须是指定的单个元素(用ID指定更方便)
    var ol = document.getElementById('ol');  // ID获得ol
    console.log(ol.getElementsByTagName('li'));  // 标签名获得li
</script>

2.3 通过类名的方法获取

html5新增了使用:document.getElementsByClassName('类名'),或者document.querySelectorAll('.box'),通过类名获取元素。

<body>
    <div class="box">盒子1</div>
    <div class="box">盒子2</div>
    <div id="nav">
        <ul>
            <li>首页</li>
            <li>产品</li>
        </ul>
    </div>
    <script>
        // 1. getElementsByClassName 根据 类名 获得 某些元素集合
        var boxs = document.getElementsByClassName('box');
        console.log(boxs);  // HTMLCollection(2) [div.box, div.box]
        
        // 2. querySelector 返回 指定选择器 的 第一个元素对象
        var firstBox = document.querySelector('.box');
        console.log(firstBox);   // <div class="box">盒子1</div>
        var nav = document.querySelector('#nav');
        console.log(nav);     // <div id="nav">...</div>
        var li = document.querySelector('li');
        console.log(li);   // <li>首页</li>
        
        // 3. querySelectorAll() 返回 指定选择器 的 所有元素对象集合
        var allBox = document.querySelectorAll('.box');
        console.log(allBox);  // NodeList(2) [div.box, div.box]
        var lis = document.querySelectorAll('li');
        console.log(lis);   // NodeList(2) [li, li]
    </script>
</body>

因为相同的类名可能对应多个元素,所有返回的结果也是一个伪数组

2.4 获取特殊元素

<body>
    <script>
        // 1.获取body 元素
        var bodyEle = document.body;
        console.log(bodyEle);   // <body>...</body>
        console.dir(bodyEle);   // body
        
        // 2.获取html 元素
        // var htmlEle = document.html;
        var htmlEle = document.documentElement;
        console.log(htmlEle);    // <html lang="en">...</html>
    </script>
</body>

3 事件基础

概念: 触发后进行响应的一种机制

组成: 事件源,事件类型,事件处理程序(事件三要素)

  • 事件源: 事件被触发的对象
  • 事件类型: 如何触发对象,例:鼠标点击onclick,鼠标经过,键盘按下等
  • 事件处理程序: 通过一个函数赋值的方式完成
<body>
    <button id="btn">唐伯虎</button>    <!-- 事件源:我们声明了一个按钮 -->
    <script>
        // 点击一个按钮,弹出对话框
        var btn = document.getElementById('btn');
        btn.onclick = function() {    // 事件类型:`.onclick`点击就可以触发对象
            alert('点秋香');   // 事件处理程序:`=function(){ }`使用一个赋值函数的方式 
        }
    </script>
</body>

执行事件的步骤:

  1. 获取事件源
  2. 注册事件(绑定事件)
  3. 添加事件处理程序(采取函数赋值形式)
<body>
    <div>123</div>
    <script>
        // 执行事件步骤:
        // 1. 获取事件源
        var div = document.querySelector('div');
        // 2.绑定事件 注册事件
        // div.onclick 
        // 3.添加事件处理程序 
        div.onclick = function() {
            console.log('我被选中了');
        }
    </script>
</body>
  • 常见的鼠标事件:

image-20231215174540458

JavaScript之DOM(一)(获取元素、事件基础、操作元素) H5规定自定义属性data-开头做为属性名并且赋值。比如或者使用 JS 设置**《350页前端校招面试题精编解析大全》**内容大纲主要包括HTML,CSS,前端基础,前端核心,前端进阶,移动端开发,计算机基础,算法与数据结构,项目,职业发展等等开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】H5规定自定义属性data-开头做为属性名并且赋值。比如或者使用 JS 设置**《350页前端校招面试题精编解析大全》**内容大纲主要包括。 阅读详情

相关推荐

Logisim实战:手把手教你搭建GB2312汉字字库(附完整电路图)

本文提供了一份详尽的Logisim实战指南,手把手教你如何利用存储芯片,通过位扩展和字扩展技术,构建一个完整的GB2312汉字字库。文章深入浅出地讲解了从编码原理、系统架构设计到具体电路实现与调试的全过程,是学习计算机组成原理和数字电路设计的绝佳实践项目。

k6l7m8n9的博客 810

1.dom元素——dom元素获取

什么是dom? dom,即document object model(文本对象模型)。整个页面元素统称dom。 本质上是一种接口(API),是专门操作网页内容的API标准 dom树 dom操作: 1.dom元素获取 2.dom元素属性操作(常规属性操作) 3.dom元素节点操作(子父节点之类的) 4.dom元素的事件(行为) 5.dom元素的方法操作 前提:要注意获取的元素是否已经初始化(需要考虑获取的元素存在还是不存在),根据页面的加载顺序来考虑 js里面如何获取dom元素 js里面dom..

ling_xy的博客 8140

搞定8GB/s数据流:一个FPGA工程师的XDMA驱动调优实战(附避坑清单)

本文详细记录了FPGA工程师在XDMA驱动调优过程中实现8GB/s高带宽数据流的实战经验。通过优化DDR访问、中断响应、DMA映射等关键环节,解决了PCIE数据采集卡在高带宽场景下的性能瓶颈,并提供了实用的避坑清单和技术方案。

weixin_29194255的博客 203

Dom元素

dom的定义 ​ DOM(Document Object Model) 文档对象模型 ​ 作用: ​ 通过dom模型可以让js操作页面中的html标签和样式,从而改变页面的结构和样式 ​ document:(文档) ​ 表示整个网页文件(各种标签) ​ html标签存在完整的层次结构 ​ object:(对象) ​ 当浏览器将html加载到页面中,会自动生成每个标签的对象,以便js可以

WJLSH123的博客 3412

2026四款AI原生IDE实测:Trae、Qoder、CodeBuddy、Cursor能力边界深度解析

AI原生IDE正从代码编辑器演进为开发者智能工作流中枢,其核心在于对上下文理解、AST编辑意图建模与多模态任务调度的工程化实现。区别于传统插件式AI辅助,真正的AI原生IDE需具备知识库嵌入、符号图索引、操作链固化等底层能力,从而支撑Figma转码、N+1查询修复、跨语言迁移等复杂场景。Trae强调中文语境与企业规范的强绑定,Qoder聚焦AST级编辑轨迹预测,CodeBuddy通过IDE/插件/CLI三态划分控制权边界,Cursor则以云端Agent实现开发任务的时空并行。本文基于真实项目压测,揭示免费版

ctk87443的博客 2467

OpenCV实战:高效检测与识别多类型条码与二维码

本文详细介绍了如何利用OpenCV的BarcodeDetector和QRCodeDetector模块,高效实现EAN-13条形码与常见二维码的检测与识别。内容涵盖从环境搭建、单码识别到处理多二维码的完整流程,并分享了提升识别率的图像预处理与性能优化等实战技巧,帮助开发者一站式解决视觉项目中的条码识别需求。

weixin_29094539的博客 493

DOM——获取元素方式

(1)获取元素 (2)对元素进行操作(设置其属性或调用其方法) (3)动态创建元素 (4)事件(什么时机做相应的操作)

weixin_68160847的博客 1439

【信道编码/Channel Coding】线性分组码

这是本专栏信道编码/Channel Coding的第二站,想对信道编码有一个系统性的认识可以看本专栏的信道编码的整体框架一文。而在本篇文章中,将介绍线性分组码的基本原理。

Tomatomatodo的博客 9245

前端入门一之DOM、获取元素、DOM核心、事件高级、操作元素、事件基础、节点操作

文档对象模型简单理解:触发–响应机制如果有同一组元素,我们想要某一个元素实现某一种样式,需要用到循环的排他思想所有元素全部清空样式(干掉他人)给当前元素设置样式(留下我自己)注意顺序不能颠倒,首先干掉其他人,在设置自己。

羊小猪~~的博客 1890

基于一维卷积神经网络对机械振动信号进行分类并加以预测

基于一维卷积神经网络对机械振动信号进行分类并加以预测 *使用一维卷积神经网络训练振动信号进行二分类 2020年7月16日,一学期没等到开学,然而又放假了。 总览优快云中大多数卷积神经网络都是对二维图片进行分类的,而图片也都是常见的猫狗分类,minst手写数字分类。一维卷积神经网络的使用非常少见,有也是IDMB情感分类,和鸢尾花分类的。 作者研究生就读于河北一所双飞,全国排名270多,哈哈哈,不吹不黑。 在网上翻来翻去找不到一篇可以利用的代码去研究我的机械故障诊断,后来在无奈下到某宝搜寻到一段代码,可以利用

qq_45714906的博客 1万+

MATLAB离线附加功能包下载与安装教程

本文介绍如何下载与安装MATLAB离线附加功能包,便于大家更加高效的使用MATLAB。

加斯顿工程师的博客 1万+

DOM中的元素获取方式、事件以及属性操作

本文旨在帮助大家学习DOM中元素的获取方式、事件以及属性操作

qq_63946637的博客 1920

Python经典编程习题100例:第32例:相反顺序输出列表

不要自卑,去提升实力 互联网行业谁技术牛谁是爹 如果文章可以带给你能量,那是最好的事!请相信自己 加油o~ 本人初学Python,只为熟悉语法编写,大神请勿理会 点击下面链接 Python经典编程100例习题汇总 题目描述: 按相反的顺序输出列表的值。 解题思路: > 利用reverse函数逆序 代码: arr=['f','g','e','b'] print(arr) arr.reverse() print(arr) ...

优快云 精品推荐 1417

DOM相关 获取元素 执行事件 操作元素

JavaScript的DOM操作可以改变网页内容、结构和样式,我们可以利用DOM操作元素来改变元素里面的内容、属性等。网页中的每个元素都可以产生某些可以触发JavaScript的事件,例如,我们可以在用户点击某按钮时产生一个事件,然后去执行某些操作。返回与指定的选择器组匹配的文档中的元素列表 (使用深度优先的先序遍历文档的节点)。W3C已经定义了一系列的DOM接口,通过这些DOM接口可以改变网页的内容、结构和样式。由于元素的 ID 在指定时必须是独一无二的,因此这是快速访问特定元素的有效方法。

christmassss的博客 1559

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

JavaScript(JS)学习笔记 3 DOM部分(DOM简介 DOM元素获取 事件简介 DOM元素修改 节点操作 事件操作)

从一名学习过其他编程语言的学习者的视角详细介绍了JS中的DOM、事件、元素修改和节点操作等内容。

hanmo22357的博客 1222

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【JavaScript】事件概述与操作DOM元素

DOM简介、获取元素方式、事件概述、操作元素。

ztK63LrD的博客 987

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

DOM(一):获取元素(查)、事件基础、操作元素(改)

dom就是一个接口,用来改变网页的内容结构还有样式。

Hdhhdhbsjxbdhvyg的博客 1469

DOM:基础、事件、元素获取

聚焦DOM:快速掌握元素选取法

奋斗的小前端 1016

JavaScript之DOM操作获取元素、事件、操作元素、节点操作

什么是 DOM? 文档对象模型(Document Object Model,简称 DOM),是 W3C 组织推荐的处理可扩展标记语言(HTML或者XML)的标准编程接口。W3C 已经定义了一系列的 DOM 接口,通过这些 DOM 接口可以改变网页的内容、结构和样式 DOM 树 文档:一个页面就是一个文档,DOM 中使用 document 表示 元素:页面中的所有标签都是元素,DOM 中使用 element 表示 节点:网页中的所有内容都是节点(标签、属性、文本、注释等),DOM 中使用 node.

weixin_53155105的博客 2949

JavaScript DOM中获取元素、事件基础、操作元素、节点操作

JavaScript DOM中获取元素、事件基础、操作元素、节点操作

2094

DOM基础:事件、获取元素、操作元素

DOM:文档对象模型(Document Object Model),是W3C推荐的处理HTML或XML的标准编程接口。通过这些DOM接口可以改变网页的内容、结构和样式。自定义属性目的:为了保存并使用数据,有些数据可以保存到页面而不用保存到数据库中。...

m0_63669414的博客 1837
上一篇: 【ECMAScript笔记四】自定义对象(创建,遍历)、内置对象(Math、Data、Array、String)、数据类型比较
下一篇: 【DOM笔记二】操作元素(修改元素内容,修改常见元素/表单元素/元素样式属性,排他思想,自定义属性操作,应用案例!)
waski
博客等级 码龄5年 366粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

waski

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值