Day1 DOM元素

1.1 DOM前言

(1)Web API 作用和分类

作用:

  • 就是使用 JS 去操作 html 和浏览器

分类:

  • DOM(文档对象模型)

  • BOM(浏览器对象模型)

(2)什么是DOM

DOM(Document Object Model —— 文档对象模型)是用来呈现以及与任意 HTML 或 XML 文档交互的API

白话文:DOM是浏览器提供的一套专门用来操作网页内容的功能

DOM作用:

  • 开发网页内容特效和实现用户交互

(3)DOM树

DOM树是什么:

  • 将 html 文档以树状结构直观的表现出来,我们称之为文档树或DOM树

  • 描述网页内容关系的名词

  • 作用:文档树直观的体现了标签与标签之间的关系

(4)DOM对象(重要)

DOM对象:

  • 浏览器根据 html 标签生成的 JS 对象

  • 所有的标签属性都可以在这个对象上面找到

  • 修改这个对象的属性会自动映射到标签身上

DOM的核心思想:

  • 把网页内容当做对象来处理

document 对象:

  • 是DOM里提供的一个对象

  • 所以它提供的属性和方法都是用来访问和操作网页内容的(例如:document.write())

  • 网页所有内容都在document里面

1.2 获取元素
  1. 通过 id 获取:在文档里获取id元素------document.getElementById('id的名字')

    <body><div id="box"></div><script>var box=document.getElementById('box')console.log(box) //元素对象console.log(typeof box)  //object</script>
    </body>

    console.dir(box)--------了解

    <body><div id="box"></div><script>var box=document.getElementById('box')console.log(box) //元素对象console.log(typeof box)  //object// 了解console.dir(box)</script>
    </body>
  2. 通过标签名获取元素,拿到的是伪数组并且是动态集合--------document.getElementsByTagName('标签名')

    注意:操作伪数组中的某个元素,可以使用for循环

    <body><div></div><ul><li>111111</li><li>222222</li><li>333333</li><li>444444</li></ul><script>console.log(document.getElementsByTagName('li')) console.log(document.getElementsByTagName('div')) </script>
    </body>
  3. html5提供的3种获取元素的方法

    (1)通过类名获取元素,得到的是伪数组-----document.getElementsByClassName('类名')

    <body><p class="box">111</p><p class="box">222</p><script>console.log(document.getElementsByClassName('box')) </script>
    </body>

    (2)获取选择器时需要加上对应的符号,如果有多个相同id/class/标签名,只能拿到第一个符合条件的元素

    document.querySelector('类名')

    <body><p class="box">111</p><p class="box">222</p><script>console.log(document.querySelector('.box'))</script>
    </body>

    (3)获取选择器时需要加上对应的符号,获取所有名为该类名的标签,得到的是伪数组

    <body><p class="box">111</p><p class="box">222</p><script>console.log(document.querySelectorAll('.box1'))</script>
    </body>
  4. 获取body和html

    <script>// 获取bodyconsole.log(document.body)// 获取htmlconsole.log(document.documentElement)</script>
1.3 事件
  • 事件的三要素:事件源、事件类型、事件处理程序

    事件源:触发事件的元素(谁) btn

    事件类型:添加的是什么事件 click hover mousemove

    事件处理程序:做什么事情 函数处理程序

    <body><div>我是盒子</div><span>行内</span><script>// 获取元素var btn_div=document.querySelector('div')btn_div.onclick=function(){alert('我是隐藏线路1')}/* var btn_div=document.getElementsByTagName('div')btn_div[0].onclick=function(){alert('我是隐藏线路1')} */var btn_span=document.querySelector('span')btn_span.onclick=function(){alert('我是隐藏线路2')}</script>
    </body>

    补充:点击事件获取一个对象:document.getElementById() document.querySelector()

    点击事件获取多个:document.getElementsByTagName() getElementsByClassName()

    document.querySelectorAll() 用所以选择想要的伪数组元素

1.4 操作元素
  • innerText:获取子孙后代的文本内容(不获取标签)---添加元素不识别html,去除空格和换行

    元素名.innerText=内容

  • innerHTML:获取子孙后代的文本内容和标签---添加元素识别html,保留空格和换行

显示在页面上的倒计时初级版本

<!DOCTYPE html>
<html lang="en">
​
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>* {padding: 0;margin: 0;list-style: none;text-decoration: none;}
​.father {display: flex;}
​.son1,.son2,.son3 {width: 50px;height: 50px;margin: 0 10px;color: white;font-size: 26px;text-align: center;line-height: 50px;background-color: black;}
​span {font-size: 30px;font-weight: 700;}</style>
</head>
​
<body><div class="father"><div class="son1"></div><span>:</span><div class="son2"></div><span>:</span><div class="son3"></div></div>
​<script>// 获取元素内容/* innerText:获取子孙后代的文本内容(不获取标签)---添加元素不识别html,去除空格和换行innerHTML:获取子孙后代的文本内容和标签---添加元素识别html,保留空格和换行*/var son1 = document.querySelector('.son1')var son2 = document.querySelector('.son2')var son3 = document.querySelector('.son3')
​function getCountDown(t) {var nowDate = +new Date()var newDate = +new Date(t)var time = (newDate - nowDate) / 1000  //1s=1000msvar d = parseInt(time / 60 / 60 / 24) < 10 ? '0' + parseInt(time / 60 / 60 / 24) : parseInt(time / 60 / 60 / 24)var h = parseInt(time / 60 / 60 % 24) < 10 ? '0' + parseInt(time / 60 / 60 % 24) : parseInt(time / 60 / 60 % 24)var m = parseInt(time / 60 % 60) < 10 ? '0' + parseInt(time / 60 % 60) : parseInt(time / 60 % 60)var s = parseInt(time % 60) < 10 ? '0' + parseInt(time % 60) : parseInt(time % 60)// return '倒计时:' + d + '天' + h + '时' + m + '分' + m + '秒'son1.innerText = hson2.innerText = mson3.innerText = s}getCountDown('2024/3/29 22:20:00')</script>
</body>
​
</html>
1.5 修改元素属性值
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>img{width: 200px;}</style>
</head>
<body><img src="../images/轮播图1.jpg" alt=""><script>let img=document.querySelector('img')let flag=trueimg.onclick=function(){if(flag){img.src='../images/轮播图2.jpg'img.title='橙色背景'flag=!flag  //取反}else{img.src='../images/轮播图1.jpg'img.title='白色背景'flag=!flag}}</script>
</body>
</html>
1.6 表单相关属性
<body>文本框:<input type="text" class="text">多选框:<input type="checkbox" class="checkbox">男<button>点击获取焦点</button><script>let text=document.querySelector('.text')let checkbox=document.querySelector('.checkbox')let btn=document.querySelector('button')btn.onclick=function(){// input获取焦点text.focus()// 设置默认值text.value='hello'// 禁用text.disabled=true// 多选框选中checkbox.checked=true}</script>
</body>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/726129.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何用selenium或pyppeteer来链接并打开指纹浏览器AdsPower【最新版】

前言 本文是该专栏的第66篇,后面会持续分享python爬虫干货知识,记得关注。 在本专栏之前,针对使用Python的Selenium或者Pyppeteer来链接并打开AdsPower指纹浏览器的方法,笔者前面都有详细介绍并附带完整操作代码。感兴趣的同学,可以往前翻阅查看。 1.如何用selenium或py…

02.URL的基本知识和使用

一.认识 URL 1. 为什么要认识 URL ? 虽然是后端给我的一个地址&#xff0c;但是哪部分标记的是服务器电脑&#xff0c;哪部分标记的是资源呢&#xff1f;所以为了和服务器有效沟通我们要认识一下 2. 什么是 URL &#xff1f; 统一资源定位符&#xff0c;简称网址&#xff…

GWO-RF|灰狼算法优化随机森林 回归预测|多变量回归预测

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、算法介绍&#xff1a; 灰狼优化算法&#xff1a; 随机森林&#xff1a; 四、完整程序下载&#xff1a; 一、程序及算法内容介绍&#xff1a; …

疾控中心污水采样器自动采样——解放双手更轻松

疾控中心使用的污水采样器如今已经实现了自动化采样&#xff0c;这无疑给工作人员带来了极大的便利。这种设备能够完成污水取样、储存等环节&#xff0c;不再需要人工干预。这意味着工作人员可以解放双手&#xff0c;不再需要进行繁重的取样工作。 这种自动化的采样方式不仅减轻…

First-Time Git Setup (初次运行 Git 前的配置)

First-Time Git Setup [初次运行 Git 前的配置] 1. git config1.1. Your Identity (用户信息)1.2. 提高命令输出的可读性1.3. Your default branch name1.4. Checking Your Settings (检查配置信息) References Pro Git (SECOND EDITION) https://git-scm.com/book/en/v2 Pro …

【汇总】pytest简易教程

pytest作为python技术栈里面主流、火热的技术&#xff0c;非常有必要好好学一下&#xff0c;因为工作和面试都能用上&#xff1b; 它不仅简单易用&#xff0c;还很强大灵活&#xff0c;重点掌握fixture、parametrize参数化、allure-pytest插件等&#xff0c;这些在后续自动化框…

python转换json

import json import os from enum import Enumclass LaneDirectionType(int, Enum):LaneDirectionType_Unknown -1 # 类型未知OneWay 1 # 单向TwoWay 2 # 双向# 颜色类型 class ColorCombo(int, Enum):NOUSE 0 # 默认值UNKNOWN 1000 # 未定义WHITE 1 # 白色(默认值…

ffmpeg maxrate 导致转码输出的内容包含随机性

https://trac.ffmpeg.org/wiki/Limiting%20the%20output%20bitrate 问题 领导提出了一个问题&#xff0c;为什么转码后的视频大小字节数据都不一样&#xff0c;这问到我了&#xff0c;一时语塞。查一下吧&#xff0c;没有什么资料支撑。主动试一下。 尝试 首先尝试一下直接…

C#,动态规划的集合划分问题(DP Partition problem)算法与源代码

1 动态规划问题中的划分问题 动态规划问题中的划分问题是确定一个给定的集是否可以划分为两个子集&#xff0c;使得两个子集中的元素之和相同。 动态规划&#xff08;Dynamic Programming&#xff0c;DP&#xff09;是运筹学的一个分支&#xff0c;是求解决策过程最优化的过程…

云计算高级课程作业

1、openEuler 二进制方式安装MySQL 8.0.x。 2、备份数据库 3.备份数据库school到/backup目录 4.备份MySQL数据库为带删除表的格式&#xff0c;能够让该备份覆盖已有数据库而不需要手动删除原有数据库 5.直接将MySQL数据库压缩备份 实验操作&#xff1a; 1、openEuler 二进制方…

Python基础一

Python是一门简单的编程语言&#xff0c;适用于人工智能、web应用、爬虫程序、大数据等方面 一、Python语言特点 Python 是一种功能强大且流行的编程语言&#xff0c;具有许多特点&#xff0c;其中一些包括&#xff1a; 1. **易学易用** Python 的语法简洁清晰&#xff0c;类…

[赛码网、牛客刷题、ACM模式] python读取输入

文章目录 内容描述读取输入常用的字符串、列表处理手段 内容描述 在一些面试或笔试过程中&#xff0c;可能会遇到需要自己写读取输入&#xff0c;习惯了力扣刷题的话&#xff0c;会有些不习惯&#xff0c;面试过程中就非常麻烦了。 今天刚好有一位朋友遇到该问题&#xff0c;所…

【go语言开发】gorm库连接和操作mysql,实现一个简单的用户注册和登录

本文主要介绍使用gorm库连接和操作mysql&#xff0c;首先安装gorm和mysql依赖库&#xff1b;然后初始化mysql&#xff0c;配置连接池等基本信息&#xff1b;然后建表、完成dao、controller开发&#xff1b;最后在swagger中测试 文章目录 前言安装依赖库数据库初始化账号注册和登…

2403C++,C++20协程通道

原文 通道是一个可用来连接协程,实现不同协程间通信的并发安全队列. Test fun test know channel() runBlocking<Unit> {val channel Channel<Int>()//生产者val producer GlobalScope.launch {var i 0while (true) {delay(1000)channel.send(i)println("…

springBoot整合Redis(三、整合Spring Cache)

缓存的框架太多了&#xff0c;各有各的优势&#xff0c;比如Redis、Memcached、Guava、Caffeine等等。 如果我们的程序想要使用缓存&#xff0c;就要与这些框架耦合。聪明的架构师已经在利用接口来降低耦合了&#xff0c;利用面向对象的抽象和多态的特性&#xff0c;做到业务代…

上市公司财务报表精讲系列一:黄山旅游

上市公司财务报表精讲系列一&#xff1a;黄山旅游 一、主营业务分行业、分产品、分地区情况二、董事会报告三、净利润现金流四、净资产收益率五、权益乘数和总资产周转率六、负债结构图七、行业分析八、案例总结九、2023年度业绩 一、主营业务分行业、分产品、分地区情况 二、董…

为国产信创服务器提供LDAP统一身份认证方案

金融信创作为 8 大行业信创之首&#xff0c;早已成为其他行业信创建设的参考。金融行业有着极为复杂的业务场景&#xff0c;对系统有着极高的稳定可靠需求&#xff0c;因此&#xff0c;在寻找微软 AD 国产化替代方案时&#xff0c;常会涉及到更深层次的场景。例如&#xff0c;最…

哪些行业将有可能被ai替代

随着AI技术的不断发展&#xff0c;越来越多的行业开始受到其影响&#xff0c;一些工作可能会被AI替代。以下是一些可能被AI替代的行业和领域&#xff1a; 制造业&#xff1a;制造业中的许多重复性劳动&#xff0c;如装配线上的工作&#xff0c;可能首先被AI和自动化技术替代。…

【test】【linux perf】【Android simpleperf】 获取火焰图 使用示例

文章目录 火焰图perfperf listperf recordperf scriptperf statperf reportperf top 官方perf使用示例记录60s系统中发生的所有上下文切换事件监测整个系统的 CPU 使用情况抓取 CPU 事件数据统计 CPU 循环事件、指令数、缓存引用、缓存失效和总线周期等性能指标的命令以mysqld进…

unity学习(45)——选择角色菜单——客户端处理服务器的数据

1.已知客户端ReceiveCallBack中已经收到来自服务器返回的数据包。 2.问题是客户端MessageManager中的Update并没有拆解该数据包 &#xff0c;因该是因为脚本没有挂载。 挂在SelectMenu场景中的Camera上即可。 挂载后成功达到目地 其中Update中的List是一个起到全局效果的static…