2025/1/12 复习JS

我乞求你别再虚度光阴

▶ 空心


摘自哔哩哔哩听课笔记。

01 上篇:核心语法

1.基于页面效果的操作

html 复制代码
<!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的分离。

html 复制代码
<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.使用函数作为参数,处理更加复杂的逻辑

javascript 复制代码
<!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.创建一个对象,并遍历它

javascript 复制代码
<!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修改元素的值

javascript 复制代码
<!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.使用索引遍历处理去修改元素的值

javascript 复制代码
<!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

javascript 复制代码
<!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

javascript 复制代码
<!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赋予到每个元素中去。

javascript 复制代码
<!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定义的变量,不能被改变。

javascript 复制代码
   {
        let count=0
        count++
        const BASE_URL='https://www.baidu.com'
     }

2.模块字符块

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

3.解构赋值

也就是变量与值一一对应

javascript 复制代码
   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. 数组和对象的扩展

javascript 复制代码
   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 每一个

javascript 复制代码
   fn(1,2,3,4)
    function fn(){
        Array.from(arguments).forEach(function(item){
            console.log(item)
        })
    }

6.对象的方法

合并对象

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

类与构造方法

javascript 复制代码
    // 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.箭头函数

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

04 下篇:ES6异步处理

05 下篇:ES6代理与模块

相关推荐
hummhumm3 分钟前
第32章 汇编语言 - 实践项目:小型操作系统内核(一)
开发语言·汇编·数据库·算法·操作系统·程序设计·高级语言
吃饺子不吃馅4 分钟前
qiankun、single-spa 和 import-html-entry还傻傻😧分不清楚?
前端·面试·架构
0xCC说逆向4 分钟前
Windows图形界面(GUI)-QT-C/C++ - QT信号与槽机制详解
java·c语言·开发语言·c++·windows·qt·mfc
看星星的派大星14 分钟前
nvim , neovim , Lua 语法, text object
开发语言·lua
兮动人18 分钟前
Windows下安装和配置Go开发环境
开发语言·windows·golang
不叫猫先生22 分钟前
【React】脚手架进阶
前端·react.js·前端框架
奥特曼狂扁小怪兽24 分钟前
C++ QT 自绘表盘
开发语言·c++·qt
你的万花筒34 分钟前
【解决mac本Chrome谷歌浏览器不能访问网络】
前端·chrome·macos
努力学习java的哈吉米大王39 分钟前
初识JAVA-面向对象的三大特征之多态
java·开发语言
冰茶_1 小时前
C#异步和多线程,Thread,Task和async/await关键字--12
开发语言·学习·c#·visual studio