Day2 DOM元素的操作

2.1 操作元素样式属性

1.通过 JS 设置/修改标签元素的样式属性

  • 比如通过轮播图小圆点自动更换颜色样式

  • 点击按钮可以滚动图片这是移动的图片的位置 left 等等

2.通过 style 属性操作 CSS

1.语法:

<!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>
.box {
width: 300px;
height: 300px;
margin: 50px auto;
background-color: antiquewhite;
}
</style>
</head>
​
<body>
<!-- 定义一个盒子 -->
<div class="box"></div>
<script>
// 获取元素
const box = document.querySelector('.box')
// 修改样式属性 对象.style.样式属性 = '值'  需要跟单位,如px
box.style.width = '600px'
// 遇到多组单词,使用小驼峰命名法
box.style.backgroundColor = 'hotpink'
</script>
</body>
​
</html>

2.注意:

  • 修改样式通过 style 属性引出

  • 如果属性有 - 连接符,需要转换为小驼峰命名法

  • 赋值的时候,需要的时候不能忘记加CSS单位

3.案例:页面刷新,随机更换背景图片

<!DOCTYPE html>
<html lang="en">
​
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>刷新背景图片</title><style>/* css样式 */body {background-image: url(../11.8/homework/1.webp);}</style>
</head>
​
<body><script>/*需求:当我们刷新页面,页面中的背景图片随机显示不同的图片分析:1.需要使用随机函数2.css页面背景图片 background-image3.标签选择body,因为body是唯一的标签,可以直接写document.body,style*/let num = Math.floor(Math.random() * 21)document.body.style.backgroundImage = `url(../11.8/homework/${num}.webp)`</script>
</body>
​
</html>

3.操作类名(className)操作CSS

1.如果修改的样式比较多,直接通过style属性修改比较繁琐,我们可以通过借助于CSS类名的形式

2.语法:

<!DOCTYPE html>
<html lang="en">
​
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>className</title>
<style>
/* 原始样式 */
div {width: 200px;height: 200px;margin: 60px auto;background-color: aqua;
}
​
/* className待用样式,注意:调用后只会覆盖重复的,不会删除原始样式 */
.box {width: 600px;height: 600px;background-color: pink;
}
</style>
</head>
​
<body>
<div></div>
<script>
// className语法
// 1.获取元素
const div = document.querySelector('div')
// 2.添加类名
div.className = 'box'
// 3.如果原本元素有class属性,需要保留
div.className = '初始class名 新增的class名'
</script>
</body>
​
</html>

3.注意:

  • 由于class是关键字,所以使用className去代替

  • className是使用新值换旧值,如果需要添加一个类,需要保留之前的类名

2.2 this指向
  • 在事件处理函数中,this指向事件源

  • 在全局作用域下,this指向window

<body><div class="box">点击我这个盒子吧</div><button>按钮</button><script>let box = document.querySelector('.box')let btn = document.querySelector('button')box.onclick = function () {this.style.width = '100px'this.style.height = '100px'this.style.backgroundColor = 'pink'}// 错误使用btn.onclick = function () {// 这里的this指的是按钮this.style.width = '100px'this.style.height = '100px'this.style.backgroundColor = 'pink'}</script>
</body>
2.3 通过className添加样式
  • 语法:元素对象.className='新类名 旧类名'

    通过className添加的是类名,该类名是已经存在的,会覆盖原来的类名,所以要把原来的类名一起写进去

    <!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>.box {width: 100px;height: 100px;color: skyblue;background-color: pink;}
    ​.new {background-color: grey;}</style>
    </head>
    ​
    <body><div class="box">旋风小子</div><script>let box = document.querySelector('.box')let flag = truebox.onclick = function () {if (flag) {this.className = 'new box'flag = !flag} else {this.className = 'box'flag = !flag}}</script>
    </body>
    ​
    </html>
2.4 排他操作
  • js分同步和异步

    排他思想:清楚全部样式,在给自己添加样式

  • <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
    </head>
    <body><ul><li>111</li><li>222</li><li>333</li><li>444</li><li>555</li><li>666</li></ul><script>let li=document.querySelectorAll('li')for(let i=0;i<li.length;i++){li[i].onclick=function(){for(let j=0;j<li.length;j++){// 清楚全部样式                 li[j].style.backgroundColor=''}// 给自己添加样式this.style.backgroundColor='green'}}</script>
    </body>
    </html>
2.5 自定义属性的获取和设置
  • 获取自定义属性-----元素.getAttribute('自定义属性名'),自定义属性名怎么写就怎么拿,可以获取元素自带的属性

  • 设置自定义属性-----元素.setAttribute('自定义属性名','值')

  • 移除自定义属性-----元素.removeAttribute('自定义属性名')

  • 自己定义属性时,统一为data-xxx=' '

<!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: 300px;}</style>
</head>
​
<body><div class="box" index="1" date-name="自定义属性值"></div><img src="../images/轮播图1.jpg" alt=""><script>/* 自定义属性的获取和设置*/let box = document.querySelector('.box')let img=document.querySelector('img')// 获取自定义属性-----元素.getAttribute('自定义属性名'),自定义属性名怎么写就怎么拿,可以获取元素自带的属性console.log(box.getAttribute('index'))  //1console.log(box.getAttribute('date-name'))  //自定义属性值// 设置自定义属性-----元素.setAttribute('自定义属性名','值')img.setAttribute('设置的自定义属性名','自定义属性值')// 移除自定义属性-----元素.removeAttribute('自定义属性名')img.removeAttribute('设置的自定义属性名')</script>
</body>
​
</html>
2.6 常用的事件
  • onblur:失去焦点

    onchange:内容发生改变

    onfocus:内容改变

    oninput:内容变化就会触发

    <!DOCTYPE html>
    <html lang="en">
    ​
    <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
    </head>
    ​
    <body><input type="text"><div>输入的姓名是:<span>我是span</span></div><script>let ipt = document.querySelector('input')let span = document.querySelector('span')let div=document.querySelector('div')// /* ipt.onblur = function () {span.innerText = ipt.value} */// /* ipt.onchange = function () {console.log('onchange')} */// /* ipt.onfocus = function () {console.log('onfocus')} */// /* ipt.oninput = function (e) {console.log('oninput')console.log(e.target.value);} */
    ​div.onclick=function(e){// 触发谁拿到的就是谁console.log(e.target)// this指向事件源console.log(this)}</script>
    </body>
    ​
    </html>

    onkeydown:键盘按下

    onkeypress:键盘按下

    onkeyup:键盘弹起

    <body><input type="text"><script>let ipt=document.querySelector('input')/* window.onkeydown=function(e){// enter的键码是13console.log(e.keyCode)if(e.keyCode==13){ipt.focus()}} */window.onkeyup=function(e){console.log(e.keyCode)}</script>
    </body>

    onmousedown:鼠标按下

    onmouseenter:鼠标进入

    onmouseleave:鼠标离开

    onmousemove:鼠标移动

    onmouseout:鼠标即将离开

    onmouseup:鼠标弹起

    onscroll:滚动

    onsubmit:提交

var和let的区别:
  • 作用域不同

    var是函数作用域(伪全局作用域)

    let是块级作用域:在块级作用域内声明的变量无法在块级作用域外面使用

  • let不能在定义之前访问该变量,但是var可以在定义之前访问(let不会预解析)

    console.log(a)//预解析只声明不复制 undefined
    var a = 10//var 后面的变量,变量提升了(也就是预解析了)
    console.log(a)//10
    console.log(b)//报错(Uncaught ReferenceError: Cannot access 'b' before initialization),let声明的变量不能在定义(初始化)之前访问
    let b = 20

  • let不能被重新定义,但是var是可以的

let a = 10
let a = "你好"//报错(Uncaught SyntaxError: Identifier 'a' has already been declared)let后面的变量不能重新定义,var可以
console.log(a)
var b = 10
var b = "你好"
console.log(b)

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

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

相关文章

Java实战:Spring Boot整合Canal与RabbitMQ实时监听数据库变更并高效处理

引言 在现代微服务架构中&#xff0c;数据的变化往往需要及时地传播给各个相关服务&#xff0c;以便于同步更新状态或触发业务逻辑。Canal作为一个开源的MySQL binlog订阅和消费组件&#xff0c;能够帮助我们实时捕获数据库的增删改操作。而RabbitMQ作为一款消息中间件&#x…

C# 用 System.Xml 读 Freeplane.mm文件,生成测试用例.csv文件

Freeplane 是一款基于 Java 的开源软件&#xff0c;继承 Freemind 的思维导图工具软件&#xff0c;它扩展了知识管理功能&#xff0c;在 Freemind 上增加了一些额外的功能&#xff0c;比如数学公式、节点属性面板等。 编写 read_Xml.cs 如下 using System; using System.IO…

kmc密钥管理的基本功能是什么

KMC(密钥管理中心)在公钥基础设施中占据着举足轻重的地位&#xff0c;它是专门负责为CA(证书授权)系统提供一系列密钥服务的核心组件。这些服务包括但不限于密钥的生成、保存、备份、更新、恢复以及查询等&#xff0c;旨在解决分布式企业应用环境中大规模密码技术应用所带来的密…

Docker从0到1的开始【入门篇】

Docker是一种流行的容器化平台&#xff0c;它允许开发人员将应用程序及其所有依赖项打包到一个标准化的单元中&#xff0c;从而实现快速部署和可移植性。在本文中&#xff0c;我们将列出一些常用的Docker命令&#xff0c;以帮助您更好地了解和使用Docker。 1. 安装Docker 要安…

R语言:多值提取到点

ArcGIS中有相关工具实现多值提取到点的功能&#xff0c;在这里&#xff0c;我将使用R语言进行操作&#xff1a; library(dplyr) library(readxl) library(sf) library(raster)setwd("D:/Datasets") Bio <- stack(paste0("D:/Datasets/Data/worldclim2_1km/…

DEYO: DETR with YOLO for End-to-End Object Detection论文翻译

DEYO&#xff1a;DETR与YOLO用于端到端目标检测 摘要 DETR的训练范式在很大程度上取决于在ImageNet数据集上预训练其骨干。然而&#xff0c;由图像分类任务和一对一匹配策略提供的有限监督信号导致DETR的预训练不充分的颈部。此外&#xff0c;在训练的早期阶段匹配的不稳定性会…

web接入海康相机视屏流 注意事项 - 编码H264

视屏编码&#xff08;主码流和子码流都改&#xff09;必须是H264&#xff0c;H265编码webrtc解析不了编码修改后&#xff0c;先使用vlc播放器&#xff0c;播放视屏编码修改后&#xff0c;重启相机&#xff0c;重启视屏录像机&#xff08;如果相机是挂在视屏录像机上的&#xff…

3.7 FreeRTOS day2

思维导图&#xff1a; 1.使用ADC采样光敏电阻数值&#xff0c;如何根据这个数值调节LED灯亮度。 配置ADC以读取光敏电阻的电压值&#xff0c;配置PWM以控制LED的亮度。使用ADC读取光敏电阻的电压值。这个值将随着环境光线的变化而变化。将ADC读取的原始值映射到一个更易于处理…

Django高级之-缓存

Django高级之-缓存 一 缓存介绍 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作,都会消耗很多的服务端资源,所以必须使用缓存来减轻后端服务…

.Net6使用JWT认证和授权

文章目录 目的实现案例一.项目所需包&#xff1a;二.配置项目 appsettings.json 文件&#xff1a;三.创建Model文件夹&#xff0c;添加AppConfig类和UserRole类1.AppConfig类获取appsettings.json文件中的值2.UserRole类用于区分用户信息和权限 四.主体代码案例&#xff1a;1.L…

第十三届“中关村青联杯”全国研究生数学建模竞赛-A题:多无人机协同任务规划(续)(附matlab代码实现)

目录 5.3 问题 3 的求解 5.3.1 问题 3 的分析 5.3.2 无人机任务规划问题的求解 5.3.3 结论与分析

centos离线安装 k8s (实操可用)

全部安装包rpm下载&#xff08;已整理好k8s和docker&#xff09;&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1ATv8BPijhvIKWz4hMnkx6Q?pwdt5db 提取码&#xff1a;t5db 将文件下载以后&#xff0c;解压到服务器 #执行所有docker-rpm包 yum -y localinstall *.rpm…

centos安装mqtt

mqtt如何在centos7.x中安装 1、下载 wget https://www.emqx.com/zh/downloads/broker/5.0.20/emqx-5.0.20-el7-amd64.rpm 2、安装 rpm -ivh emqx-5.0.20-el7-amd64.rpm 也可以 yum install emqx-5.0.20-el7-amd64.rpm -y 3、启动 systemctl start emqx 4、查…

OpenCV开发笔记(七十六):相机标定(一):识别棋盘并绘制角点

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://blog.csdn.net/qq21497936/article/details/136535848 各位读者&#xff0c;知识无穷而人力有穷&#xff0c;要么改需求&#xff0c;要么找专业人士&#xff0c;要么自己研究 红胖子(红模仿…

阿珊比较Vue和React:两大前端框架的较量

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【你也能从零基础学会网站开发】Web建站之HTML+CSS入门篇 常用HTML标签(3)

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;web开发者、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 HTML框架集…

Linux环境下使用interrupt方式操作UART

目录 概述 1 Linux环境下UART设备 2 轮询方式操作UART功能实现 2.1 打开串口函数&#xff1a;usr_serial_open 2.2 关闭串口函数&#xff1a; usr_serial_close 2.3 发送数据函数&#xff1a; usr_serial_sendbytes 2.4 接收数据函数&#xff1a; usr_serial_readinterr…

如何实现网页的懒加载?图片懒加载的原理

图片懒加载的原理如下&#xff1a; 在网页中将需要懒加载的图片的src属性替换为一个占位符&#xff0c;例如一个空白的透明图片或者一个loading图标。 使用JavaScript监听滚动事件&#xff0c;判断用户是否滚动到需要显示图片的位置。 当用户滚动到相应位置时&#xff0c;获取…

Linux命令-consoletype命令(输出已连接的终端类型)

说明 consoletype命令 用于打印已连接的终端类型到标准输出&#xff0c;并能够检查已连接的终端是当前终端还是虚拟终端。 语法 consoletype示例 [rootlocalhost ~]# consoletype pty

使用腾讯云快速搭建WordPress网站流程详解

专栏系列文章&#xff1a; WordPress建站主题美化系列教程https://blog.csdn.net/seeker1994/category_12184577.html 一文搞懂WordPress是什么&#xff1f;为什么用它建站&#xff1f;怎么安装与部署&#xff1f; 初次安装WordPress后如何进行网站设置&#xff08;主题安装、…