2025/1/12 复习JS

news2025/1/15 8:43:31

我乞求你别再虚度光阴

▶ 空心

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

摘自哔哩哔哩听课笔记。

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=0
        count++
        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. Class
    class 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+n2
    const getSum3 =(n1,n2)=>n1+n2

04 下篇:ES6异步处理

05 下篇:ES6代理与模块

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

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

相关文章

初学stm32 --- II2C_AT24C02,向EEPROM中读写数据

目录 IIC总线协议介绍 IIC总线结构图 IIC协议时序 1. ACK&#xff08;Acknowledge&#xff09; 2. NACK&#xff08;Not Acknowledge&#xff09; IO口模拟II2C协议 发送起始信号&#xff1a; 发送停止信号&#xff1a; 检测应答信号&#xff1a; 发送应答信号&#x…

Angular-生命周期及钩子函数

什么是生命周期 Angular 创建和渲染组件及其子组件&#xff0c;当它们绑定的属性发生变化时检查它们&#xff0c;并在从 DOM 中移除它之前销毁它们。生命周期函数通俗的讲就是组件创建、组件更新、组件销毁的时候会触发的一系列的方法。当 Angular 使用构造函数新建一个组件或…

vue(五)基础语法--循环遍历指令

目录 简单数据的处理&#xff08;常用&#xff09; 复杂数据&#xff08;json数据&#xff09; v-for 与对象 通过key管理状态 Key的来源 这一节类同于vue&#xff08;四&#xff09;基础语法--条件渲染-CSDN博客 &#xff0c;本质都是那些基础语句语法的实现。 简单介绍 …

【全套】基于分类算法的学业警示预测信息管理系统

【全套】基于分类算法的学业警示预测信息管理系统 【摘 要】 随着网络技术的发展基于分类算法的学业警示预测信息管理系统是一种新的管理方式&#xff0c;同时也是现代学业预测信息管理的基础&#xff0c;利用互联网的时代与实际情况相结合来改变过去传统的学业预测信息管理中…

解决线程安全问题,Lock锁,死锁以及如何避免,线程的通信和线程池

如何解决线程安全问题 当多个线程共享一个资源时&#xff0c;则可能出现线程安全问题。 java中解决线程安全的方式有三种 第一种: 同步代码块 第二种: 同步方法 第三种: Lock 同步代码块 synchronized(锁对象){ 需要同步的代码。 } synchronized 同步的意思 锁对象可以是任…

源码编译安装httpd 2.4,提供系统服务管理脚本并测试(两种方法实现)

方法一&#xff1a;使用 systemd 服务文件 sudo yum install gcc make autoconf apr-devel apr-util-devel pcre-devel 1.下载源码 wget https://archive.apache.org/dist/httpd/httpd-2.4.46.tar.gz 2.解压源码 tar -xzf httpd-2.4.46.tar.gz 如果没有安装tar 记得先安装…

基于微信小程序的智能停车场管理系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

LabVIEW驱动电机实现样品自动搜索

利用LabVIEW控制电机驱动相机在XY平面上进行扫描&#xff0c;以检测样品位置。样品最初可能位于相机视野范围之外&#xff0c;需要实现自动搜索样品位置并完成精确定位扫描的功能。该系统需具有以下特点&#xff1a; 高效搜索&#xff1a;能够快速确定样品位置&#xff0c;缩短…

excel 整理表格,分割一列变成多列数据

数据准备 对于很多系统页面的数据是没有办法下载的。 这里用表格数据来举例。随便做数据的准备。想要看excel部分的可以把这里跳过&#xff0c;从数据准备完成开始看。 需要一点前端基础知识&#xff0c;但不多&#xff08;不会也行&#xff09;。 把鼠标放在你想要拿到本地的…

MAC AndroidStudio模拟器无网络

先确认PC端是正常访问网络的&#xff1b; 模拟器端修改Wifi设置&#xff1a;设置 - 网络和互联网 - WALN设置 按照上图修改&#xff1b; IP设置&#xff1a;从DHCP修改为静态&#xff0c;IP地址&#xff1a;10.0.2.16 &#xff0c;网关&#xff1a;10.0.2.2 &#xff0c; DNS…

【Linux系统】Ext系列磁盘文件系统一

0. 从快递系统引入文件系统 理解文件系统&#xff1a;菜鸟驿站的类比 在日常生活中&#xff0c;我们常常会使用到快递服务来寄送和接收包裹。这个过程虽然看似简单&#xff0c;但背后却有着一套复杂而有序的管理系统在支撑。今天&#xff0c;我们将通过一个类比——将文件系统…

1Hive概览

1Hive概览 1hive简介2hive架构3hive与Hadoop的关系4hive与传统数据库对比5hive的数据存储 1hive简介 Hive是基于Hadoop的一个数据仓库工具&#xff0c;可以将结构化的数据文件映射为一张数据库表&#xff0c;并提供类SQL查询功能。 其本质是将SQL转换为MapReduce/Spark的任务进…

Elasticsearch入门学习

Elasticsearch是什么 Elasticsearch 是一个基于 Apache Lucene 构建的分布式搜索和分析引擎、可扩展的数据存储和矢量数据库。 它针对生产规模工作负载的速度和相关性进行了优化。 使用 Elasticsearch 近乎实时地搜索、索引、存储和分析各种形状和大小的数据。 特点 分布式&a…

[读书日志]8051软核处理器设计实战(基于FPGA)第七篇:8051软核处理器的测试(verilog+C)

6. 8051软核处理器的验证和使用 为了充分测试8051的性能&#xff0c;我们需要测试每一条指令。在HELLO文件夹中存放了整个测试的C语言工程文件。主函数存放在指令被分为五大类&#xff0c;和上面一样。 打开后是这样的文件结构。HELLO.c是主文件&#xff0c;这是里面的代码&am…

【Vue实战】Vuex 和 Axios 拦截器设置全局 Loading

目录 1. 效果图 2. 思路分析 2.1 实现思路 2.2 可能存在的问题 2.2.1 并发请求管理 2.2.2 请求快速响应和缓存带来的问题 3. 代码实现 4. 总结 1. 效果图 如下图所示&#xff0c;当路由变化或发起请求时&#xff0c;出现 Loading 等待效果&#xff0c;此时页面不可见。…

一文读懂yolo11模型训练

一文读懂yolo11模型训练 一、环境准备 Anaconda安装 简介 Anaconda 是一个流行的开源 Python 发行版&#xff0c;专注于数据科学、机器学习、科学计算和分析等领域。它提供了一个强大的包管理器和环境管理器&#xff0c;名为 Conda&#xff0c;以及一个预装了大量科学计算和…

Apache PAIMON 学习

参考&#xff1a;Apache PAIMON&#xff1a;实时数据湖技术框架及其实践 数据湖不仅仅是一个存储不同类数据的技术手段&#xff0c;更是提高数据分析效率、支持数据驱动决策、加速AI发展的基础设施。 新一代实时数据湖技术&#xff0c;Apache PAIMON兼容Apache Flink、Spark等…

音视频入门基础:RTP专题(1)——RTP官方文档下载

一、引言 实时传输协议&#xff08;Real-time Transport Protocol&#xff0c;简写RTP&#xff09;是一个网络传输协议&#xff0c;由IETF的多媒体传输工作小组1996年在《RFC 1889》中公布的。 RTP作为因特网标准在《RFC 3550》有详细说明。而《RFC 3551》详细描述了使用最小…

【Vim Masterclass 笔记13】第 7 章:Vim 核心操作之——文本对象与宏操作 + S07L28:Vim 文本对象

文章目录 Section 7&#xff1a;Text Objects and MacrosS07L28 Text Objects1 文本对象的含义2 操作文本对象的基本语法3 操作光标所在的整个单词4 删除光标所在的整个句子5 操作光标所在的整个段落6 删除光标所在的中括号内的文本7 删除光标所在的小括号内的文本8 操作尖括号…

LiveGBS流媒体平台GB/T28181常见问题-没有收到视频流播放时候提示none rtp data receive未收到摄像头推流如何处理?

LiveGBS没有收到视频流播放时候提示none rtp data receive未收到摄像头推流如何处理&#xff1f; 1、none rtp data receive2、搭建GB28181视频直播平台 1、none rtp data receive LiveSMS 收不到下级推流 首先需要排查服务器端 UDP & TCP 30000-30249 端口是否开放其次排…