2025/1/12 复习JS

我乞求你别再虚度光阴

▶ 空心

---------------------------------------------------------------------------------------------------------------------------------

摘自哔哩哔哩听课笔记。

01 上篇:核心语法

1.基于页面效果的操作

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>颜色切换示例</title>
</head><style>.change {background-color: tomato;line-height: 100px;width: 300px;text-align: center;transition: all 1s;}.box {line-height: 100px;width: 300px;background-color: yellow;text-align: center;}
</style><body><div class="box">鸡蛋的黄</div><script>const dom1 = document.querySelector('.box');dom1.onclick = function () {this.innerHTML = '西红柿的红';this.className = 'change';};</script>
</body></html>

注意:在获取类选择器时候需要使用变量重新获取。但ID选择器不用。

我们可以通过src实现,HTML和JS的分离。

<script src="index.js"></script>

2.基于数值的操作

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title></title>
</
<style>
</style>
<body>使用循环,函数去书写1~100的和<script>function GetSum(){console.log("开始了")var sum =0;for(var i =1;i<=100;i++){sum +=i;}return sum;}GetSum();var All =GetSum();console.log(All);</script>
</body>
</html>

打开F12,查看控制台,笔记本电脑,按Fn+F12

3.使用函数作为参数,处理更加复杂的逻辑

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><body><script>function sum(start,end,f){var sum =0;for(var i =start;i<=end;i++){if(f(i)){sum+=i;}}return sum;}var result =sum(1,100,function(n){if(n%2==0){return true;}return false;});console.log(result);</script></body>
</html>

4.创建一个对象,并遍历它

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><body><script>var People={name:"苏高阳",age:22,}for(var key in People){console.log(key,People[key]);}</script></body>
</html>

02 中篇:Dom&Timer

Dom&Bom  指的是文档模型对象和浏览器模型

要使用Javascript对值进行修改,首先要找到标签进行操作。

getElementById 获取指定的HTML页面元素对象

getElementByTagName 返回所有指定标签名的HTML页面的元素对象

getElementByName 获取一组指定name的HTML页面元素

getElementByClassName 返回所有指定类名的HTML页面元素对象

除了Id只有一个,其他方法默认查找多个,所以其他方法默认存在数组里。

1.使用contentText修改元素的值

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>使用contentText去修改元素的值</title>
</head>
<body><div id="block">Hello</div> <script>var dom1 = document.getElementById("block")dom1.textContent="JavaScript";</script>
</body>

2.使用索引遍历处理去修改元素的值

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>使用contentText去修改元素的值</title>
</head>
<body><p>苏轼</p><p>苏东坡</p><p>苏有朋</p><p>苏秦</p><script>var dom1 =document.getElementsByTagName('p');for(var i=0;i<dom1.length;i++){dom1[i].textContent="苏高阳";}</script>
</body>

3.其他获取元素的方式

我觉得这个视频博主举的例子就很好,弹幕说很具有人文主义。

针对一个元素:querySelector()

针对获取同级别的上一个元素:previousElementSibling

针对获取同级别的下一个元素: nextElementSibling

获取父元素:parentNode

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title></title>
</head>
<body>
<div id="containner"><p>镇山的老虎</p><p class="item">敏捷的豹</p><p>远见的鹰</p><p>善战的狼</p>
</div>
<script>var dom1 =document.querySelector('.item');dom1.textContent='替罪的羊'; // dom1上面的元素dom1.previousElementSibling='划水的鱼';//dom1 上面的元素dom1.nextElementSibling='看门的狗';//  父元素var dom2=  dom1.parentNode;dom2.textContent="儆猴的鸡"
</script>
</body>

4.利用事件实现前后端交互

简单的应用,弹出surprise

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title></title>
</head>
<style>#containner{margin: 10px 10px;width: 100px;height: 100px;text-align: center;background-color: aqua;line-height: 100px;}
</style>
<body>
<div id="containner">
默认文本
</div>
<script>containner.onclick=function(){alert('surprise')}
</script>
</body>

我想要实现再次点击,弹出surprise again  

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title></title>
</head>
<style>#containner{margin: 10px 10px;width: 100px;height: 100px;text-align: center;background-color: aqua;line-height: 100px;}
</style>
<body>
<div id="containner">
默认文本
</div>
<script>containner.addEventListener('click',function(){alert('surprise')})containner.addEventListener('click',function(){alert('surprise again')})
</script>
</body>

5.轮播图

学会这些简单的之后,我们就可以试着去写一个轮播图carousel

  • nth-child() 是一个伪类选择器,用于选取父元素的第 n 个子元素。

首先我们可以先理清楚思路,需要定义的是四个列表,两个按钮,过渡是由透明度为1到透明度为0来进行切换,opacity:1是不透明,0是透明。是由第一个列表切换到第二个列表。

在书写JS时,定义的变量,一是整个轮播图carousel,引出的是列表的每个元素,按钮的两个元素。

最难的是添加事件的方法,将active赋予到每个元素中去。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>轮播图</title>
</head>
<style>#carousel li{width: 200px;line-height: 200px;position: absolute;text-align: center;font-size: 35px;color:#fff;opacity: 0;transition:opacity 1s;}#carousel li:nth-child(1){background-color: orange;}#carousel li:nth-child(2){background-color: brown;}#carousel li:nth-child(3){background-color: skyblue;}#carousel li:nth-child(4){background-color:grey;}#pre{margin-top: 300px;margin-left: 40px;}#next{margin-top: 300px;margin-left: 100px;}/* 第一张图不要是透明色 */#carousel li.active{opacity: 1;}
</style>
<body>
<ul id="carousel"><li class="active">镇山的虎</li><li>敏捷的豹</li ><li>远见的鹰</li><li>善战的狼</li>
</ul>
<button id="pre">上一张</button>
<button id="next">下一张</button>
<script>
// 轮播图
var carousel =document.querySelector('#carousel')
var items =carousel.children
var preBtn =document.querySelector('#pre')
var nextBtn =document.querySelector('#next')var index=0
nextBtn.addEventListener('click',function(){items[index].className=''if(index==items.length-1){index = -1}index++items[index].className='active'
})preBtn.addEventListener('click', function() {items[index].classList.remove('active');index = (index - 1 + items.length) % items.length;items[index].classList.add('active');});</script>
</body>

03 下篇:ES6上

1.变量与常量

使用const定义的变量,不能被改变。

   {let count=0count++const BASE_URL='https://www.baidu.com'}

2.模块字符块

    const str1='abc'+'efg'//  反引号就是波浪号的标记const str2 =` efg ${str1}`console.log(str2)

 3.解构赋值

也就是变量与值一一对应

   const [a,b,c] =[1,2,3]console.log(a,b,c)const { username,age:userAge,...otherInfo } ={username:'苏高阳',age:18,gender:'male',category:'user'}console.log(username,userAge,otherInfo)

4. 数组和对象的扩展

   const arr1 = [1,2,3]const arr2 = [4,5,6]const arr3 =[100,...arr1,...arr2,10,20]console.log(arr3)const obj1={a:1}const obj2={b:2}const obj3={...obj1,...obj2}console.log(obj3)

5.数组的方法,Array from.参数..forEach 每一个

   fn(1,2,3,4)function fn(){Array.from(arguments).forEach(function(item){console.log(item)})}

6.对象的方法

合并对象

     const objA={name:'吴悠',age:18}const objB={gender:'male',}// 我希望将obj1与obj2合并const objC=Object.assign({},objA,objB)console.log(objA,objB,objC);

类与构造方法

    // 5. Classclass A {// 构造方法 constructor(name, age) {this.name = name;this.age = age;}intruduce() {console.log(`我的名字是 ${this.name}, 我的年龄是 ${this.age}`);}
}
const a1 = new A('苏高阳', 18);
a1.intruduce();

7.箭头函数

    // 如果我想要表达的含义是const getSum1 =function(){return n+3}// 那我可以写成const getSum2 = n = n=>n+3// 表示n1+n2const getSum3 =(n1,n2)=>n1+n2

04 下篇:ES6异步处理

05 下篇:ES6代理与模块

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

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

相关文章

【初识扫盲】厚尾分布

厚尾分布&#xff08;Fat-tailed distribution&#xff09;是一种概率分布&#xff0c;其尾部比正态分布更“厚”&#xff0c;即尾部的概率密度更大&#xff0c;极端值出现的概率更高。 一、厚尾分布的特征 尾部概率大 在正态分布中&#xff0c;极端值&#xff08;如距离均值很…

机组存储系统

局部性 理论 程序执行&#xff0c;会不均匀访问主存&#xff0c;有些被频繁访问&#xff0c;有些很少被访问 时间局部性 被用到指令&#xff0c;不久可能又被用到 产生原因是大量循环操作 空间局部性 某个数据和指令被使用&#xff0c;附近数据也可能使用 主要原因是顺序存…

Transformer创新模型!Transformer+BO-SVR多变量回归预测,添加气泡图、散点密度图(Matlab)

Transformer创新模型&#xff01;TransformerBO-SVR多变量回归预测&#xff0c;添加气泡图、散点密度图&#xff08;Matlab&#xff09; 目录 Transformer创新模型&#xff01;TransformerBO-SVR多变量回归预测&#xff0c;添加气泡图、散点密度图&#xff08;Matlab&#xff0…

31_搭建Redis分片集群

Redis的主从复制模式和哨兵模式可以解决高可用、高并发读的问题。但是依然有两个问题没有解决:海量数据存储问题、高并发写的问题。由于数据量过大,单个master复制集难以承担,因此需要对多个复制集进行集群,形成水平扩展每个复制集只负责存储整个数据集的一部分,这就是Red…

ASP.NET Core - 日志记录系统(二)

ASP.NET Core - 日志记录系统&#xff08;二&#xff09; 2.4 日志提供程序2.4.1 内置日志提供程序2.4.2 源码解析 本篇接着上一篇 ASP.NET Core - 日志记录系统(一) 往下讲&#xff0c;所以目录不是从 1 开始的。 2.4 日志提供程序 2.4.1 内置日志提供程序 ASP.NET Core 包括…

nginx的可视化配置工具nginxWebUI的使用

文章目录 1、nginx简介2、nginxWebUI2.1、技术解读2.2、开源版和专业版之间的区别2.3、功能解读 3、安装与使用3.1、下载镜像3.2、查看镜像3.3、启动容器3.4、使用 4、总结 1、nginx简介 Nginx 是一个高效的 HTTP 服务器和反向代理&#xff0c;它擅长处理静态资源、负载均衡和…

【C++】IO 流

文章目录 &#x1f449;C 语言的输入与输出&#x1f448;&#x1f449;流是什么&#x1f448;&#x1f449;C IO 流&#x1f448;C 标准 IO 流C 和 C 语言的输入格式问题C 的多次输入内置类型和自定义类型的转换日期的多次输入C 文件 IO 流文本文件和二进制文件的读写 &#x1…

基于springboot的幼儿园管理系统系统

作者&#xff1a;学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等 文末获取“源码数据库万字文档PPT”&#xff0c;支持远程部署调试、运行安装。 项目包含&#xff1a; 完整源码数据库功能演示视频万字文档PPT 项目编码&#xff1…

Pycharm 使用教程

一、基本配置 1. 切换Python解释器 pycharm切换解释器版本 2. pycharm虚拟环境配置 虚拟环境的目的&#xff1a;创建适用于该项目的环境&#xff0c;与系统环境隔离&#xff0c;防止污染系统环境&#xff08;包括需要的库&#xff09;虚拟环境配置存放在项目根目录下的 ven…

Java设计模式——单例模式(特性、各种实现、懒汉式、饿汉式、内部类实现、枚举方式、双重校验+锁)

文章目录 单例模式1️⃣特性&#x1f4aa;单例模式的类型与实现&#xff1a;类型懒汉式实现(线程不安全)懒汉式实现(线程安全&#xff09;双重锁校验懒汉式(线程安全)饿汉式实现(线程安全)使用类的内部类实现⭐枚举方式实现单例&#xff08;推荐&#xff09;&#x1f44d; 单例…

STM32 FreeRTOS中断管理

目录 FreeRTOS的中断管理 1、STM32中断优先级管理 2、FreeRTOS任务优先级管理 3、寄存器和内存映射寄存器 4、BASEPRI寄存器 5、FreeRTOS与STM32中断管理结合使用 vPortRaiseBASEPRI vPortSetBASEPRI 6、FromISR后缀 7、在中断服务函数中调用FreeRTOS的API函数需注意 F…

[Spring] SpringCloud概述与环境工程搭建

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

mobaxterm内置编辑器中文出现乱码如何解决:直接更换编辑器为本地编辑器

诸神缄默不语-个人CSDN博文目录 使用场景是我需要用mobaxterm通过SSH的方式登录服务器&#xff0c;进入服务器之后我就直接打开代码文件&#xff0c;mobaxterm会直接用内置的编辑器&#xff08;MobaTextEditor&#xff09;打开&#xff0c;但这会导致中文编程乱码。 我一开始是…

机器学习与人工智能的关系

机器学习与人工智能的关系 一、人工智能二、机器学习2.1 机器学习与人工智能的关系2.2 机器学习的本质 三、其他玩艺 曾几何时&#xff0c;人工智能还是个科幻名词&#xff0c;仿佛只属于未来世界。如今&#xff0c;它已经渗透到了我们生活的方方面面&#xff0c;成为顶流。我们…

一些常见的Java面试题及其答案

Java基础 1. Java中的基本数据类型有哪些&#xff1f; 答案&#xff1a;Java中的基本数据类型包括整数类型&#xff08;byte、short、int、long&#xff09;、浮点类型&#xff08;float、double&#xff09;、字符类型&#xff08;char&#xff09;和布尔类型&#xff08;boo…

构建高性能网络服务:从 Socket 原理到 Netty 应用实践

1. 引言 在 Java 网络编程中&#xff0c;Socket 是实现网络通信的基础&#xff08;可以查看我的上一篇博客&#xff09;。它封装了 TCP/IP 协议栈&#xff0c;提供了底层通信的核心能力。而 Netty 是在 Socket 和 NIO 的基础上&#xff0c;进一步封装的高性能、异步事件驱动的…

Docker PG流复制搭建实操

目录标题 制作镜像1. 删除旧的容器2. 创建并配置容器3. 初始化数据库并启动 主库配置参数4. 配置主库5. 修改 postgresql.conf 配置 备库配置参数6. 创建并配置备库容器7. 初始化备库 流复制8. 检查主库复制状态9. 检查备库配置 优化建议问题1&#xff1a;FATAL: using recover…

Elasticsearch 批量导入数据(_bluk方法)

官方API&#xff1a;https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html 建议先看API POST /<索引名>/_bulk 格式要求&#xff1a; POST _bulk { "index" : { "_index" : "test", "_id" : &q…

Active Prompting with Chain-of-Thought for Large Language Models

题目 大型语言模型的思维链主动提示 论文地址&#xff1a;https://arxiv.org/abs/2302.12246 项目地址&#xff1a;https://github.com/shizhediao/active-prompt 摘要 大型语言模型(LLM)规模的不断扩大为各种需要推理的复杂任务带来了涌现能力&#xff0c;例如算术和常识推理…