前言:暑假空闲时间比较多,之前的落下的一个个都要补上。在牛客先刷刷题吧,前端至少要成为自己熟练掌握的一项,不管是为了工作还是以后读研,总得有拿出手的一项熟练的领域啊。
一、JavaScript
字符串 单引号双引号不区分
var定义所有 定义前不分类型
dom输出换行符<br/>,conslog输入换行' \n '
类型转换
parseInt() //转换成int形式
parseFloat() //转换成float形式
isNaN() //检查是否是非数字


两种特殊类型

获取类型

三种在不同界面的不同输出:
alert()
console.log()
document.write()

特殊进制的数值

字符串


俩等号和仨等号


组合语句这样输出

Switch

函数调用

形参不强调数据类型 其余一样
作用域


注意访问和赋值的不同、
对象
obj对象

key-value
对空obj增加键值对 / 改变
删除

查找访问

排序
冒泡排序
选择排序
数组
数组

数组长度

push

pop

unshift

shift

reverse

splice

sort默认按位排序 如11 12 13 2 21 23 3 31 32
return a-b 从小到大
return b-a 从大到小

join


concat

slice
包前不包后
没有数据返回就是-1
indexOf
以下为数组function:

forEach 遍历一次执行一次里边的功能



map 将一个数组遍历 以一定规则映射到另一个数组里 遍历时确定返回值


fiflter 过滤数组 返回过滤后的数组


every 判断数组每一项元素条件 返回一个布尔值

some 判断数组有一项元素条件 返回一个布尔值
16种数组方法:

字符串
首位连接连个字符串:加号


charAt 获取索引位置的字符串

toLowerCase

toUpperCase

replace

trim

split


substr substring slice


数字
针对数字 仍旧使用var定义

获取数字↑
对数字的操作↓




结果保留正数 其实是算术平方根




【不均衡概x率随机获取0-10范围内的整数】

【均匀概率随机获取0-10范围内的整数】




获取0~△(x,y) 再加x

时间
获取





0是一月 11是十二月
星期信息:即是星期几。1-6代表周一到周六 0是周日

设置

【封装函数 获得两个节点之间的时间差(天 时 分表示)】:
时间戳相减

对象数据类型返回


BOM
browser object model
可视窗口尺寸:


单位px

如何和某个事件绑定

询问框有确定和取消按钮,点确定返回true,取消返回false
输入框:
返回值是输入内容,取消返回null
开启和关闭标签页
(js中页面元素id可以直接当做变量使用)

均在控制台触发


相当于左右箭头





瞬间滚动
平滑滚动:

定时器



返回值均表示 第几个定时器 不区分种类
关闭定时器:

关闭时不区分种类 可以互相关闭 即两种用法选择一种使用即可
温馨提示:close 是关键字,取ID时可以将c大写哦
给按钮绑定事件:

DOM(上)
Document Object Model
获取元素:

如获取到的这个元素为:

多了一个s
伪数组按照数组排列方法,但是不能使用数组类方法。
拓展:关于多类,html元素可以使用多类,中间用空格隔开,例如
<h2 class="city main">London</h2>中h2同属于city类和main类,并从这两个类中获取css样式。



div span a h1都是标签名

选择器可以直接是**标签名 / .类名 / #id名**,即三种均可,只不过是返回第一个元素
获取元素共五种方法:

操作元素内容:

操作文本内容:通过点击按钮或某事件完成对html的标签内容修改( 不改变原标签)
操作超文本内容:通过点击按钮或某事件完成对html的标签或标签内容修改
如何获元素?自己设置一个变量,运用dom操作从网页中获取。对元素的修改能直接运用到网页中。
点击button按钮修改文本内容:
将p标签换成span标签:


元素的属性有id type等
更改元素原生属性:


自定义修改属性(?)
操作类名


中划线名需改成驼峰名,如background-color改成backgroundColor。


对于非行内样式,只能获取不能更改。



DOM(下)
节点操作


创建节点

创建后插入节点 父节点也需要使用var获取

删除节点

替换节点

克隆节点 默认是false 不克隆后代

获取元素尺寸 区别在于是否加上border区域尺寸
事件
”事件源.on事件类型=事件处理函数“

常用事件类型:

事件对象:以一个对象数据类型记录下每次事件触发时的一些相关信息。如鼠标点击事件的事件对象:

接受事件对象的方法

鼠标事件相关信息





事件传播:
当点击小盒子时,先从外向内传,再从内向外传。 总共三个阶段。
浏览器传播机制默认从冒泡阶段开始。

如点击inner小块儿,另外两个也会被触发onclick的function 。

阻止事件传播

事件委托(?)

通过target判断
面向对象
1、概念

面向对象的核心:高内聚低耦合(就是对面向过程的高度封装)

机器 即 构造函数
2、创建对象的方式
若用var obj字面量方式创造,则不符合“批量生产”原则
若用内置构造函数创建对象, 依旧不满足批量生产。

使用工厂函数创建对象

可初步实现批量制造要求

使用形参后,可实现批量且内容不同,满足条件。
使用自定义构造函数创建对象 需要new和this一起使用


3、构造函数的使用
和普通函数没有区别 只是使用的时候和new关键字连用

4、构造函数的不合理


调用function内的function
5、原形(?)
prototype是一个对象

如图 构造一个孔的Person的function函数prototype输出结果

6、面向对象选项卡-案例
ES6新增语法
ES6 是新的 JS 语法标准。ES6 实际上是一个泛指,泛指 ES 2015 及后续的版本。
jQuery 的语法是偏向于 ES3 的。而现在主流的框架 Vue.js 和 React.js 的默认语法,都是用的 ES6。
新增let const:var、let、const 的本质区别是什么 - 知乎 (zhihu.com)
简而言之,let是局部作用域,var是全局作用域,const是全局中的常量作用域。
新增数组的解构赋值:可以将数组中的位置提取出来,按照对应位置一一赋值给变量:
let [a, b, c] = [1, 2, 3];
以及对对象的解构复制:
const person = { name: 'qianguyihao', age: 28, sex: '男' };
let { name, age, sex } = person; // 对象的结构赋值
console.log(name); // 打印结果:qianguyihao
console.log(age); // 打印结果:28
console.log(sex); // 打印结果:男
对字符串的解构赋值:
const [a, b, c, d] = 'hello';
console.log(a);
console.log(b);
console.log(c);
console.log(typeof a); //输出结果:string
打印结果:
h
e
l
string
新增箭头函数


箭头函数本身不绑定 this,this 指向的是箭头函数定义位置的 this(也就是说,箭头函数在哪个位置定义的,this 就跟这个位置的 this 指向相同)。
var name = '许嵩';
var obj = {
name: '千古壹号',
sayHello: () => {
console.log(this.name);
},
};
obj.sayHello();
//打印结果 许嵩
参数默认值
function fn(param = 'hello') {
console.log(param);
}
//方法被调用时,如果没有给参数赋值,那就是用默认值;
//方法被调用时,如果给参数赋值了新的值,那就用新的值。
剩余参数

拓展运算:将数组或者对象拆分成逗号分隔的参数序列。
(而剩余参数是将剩余的元素放到一个数组中)
const arr = [10, 20, 30];
...arr // 10, 20, 30 注意,这一行是伪代码,这里用到了扩展运算符
console.log(...arr); // 10 20 30
console.log(10, 20, 30); // 10 20 30
eg1
二、关键词回忆复习
obj
三种输出
var
typeof
五种数据类型



时间的 获取 与 设置
BOM事件:alert confirm prompt open close

总结:说了这么多其实还是得和html一样自己敲一遍才能记得住。。。
三、案例
以后所有案例用vscode写成html,用typora写代码简直太受罪了…
1、回到顶部
一、使用js中dom操作实现
//需求:下拉滚动条,导航栏浮现,右下角回到顶部按钮浮现。
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
margin: 0px;
padding: 0px;
}
body{
height: 2500px;
}
.header{
width: 100%;
height: 80px;
display: flex;
justify-content: center;
align-items: center;
font-size: 30px;
color: aqua;
background-color: blueviolet;
position: fixed;
top: -80px;
left: 0;
transition:bottom .5s linear ;
}
.goTop{
width: 50px;
height: 50px;
background-color:pink;
color: aliceblue;
font-size: 20px;
line-height: 25px;
text-align: center;
position:fixed;
bottom: 50px;
right: 50px;
display: none;
}
</style>
</head>
<body>
<div class="header">i am top</div>
<div class="goTop">goTop</div>
<script>
var header = document.querySelector('.header');
var goTop = document.querySelector('.goTop');
window.onscroll=function(){
var height= document.documentElement.scrollTop || document.body.scrollTop;
if(height>=300){
header.style.top='0px';
goTop.style.display='block';
}
else{
header.style.top='-80px';
goTop.style.display='none';
}
}
goTop.onclick=function(){
alert("this click has been started");
// header.style.display='block'; 非行内元素只能获取不能更改
window.scrollTo({
top: 0, //必须要跟逗号 scroolTo语法规定
// left: 0,
behavior: 'smooth'
});
}
</script>
</body>
2、全选按钮
//需求:全选按钮生效,且四个单选勾上后全选自动勾上。
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
margin:0;
padding:0;
}
.box{
width:100px;
padding:20px;
border:1px solid pink;
margin:30px auto;
border-radius: 5px;
}
hr{
margin:10px 0;
}
</style>
<body>
<div class="box">
全选:<input type="checkbox"><br />
<hr />
<input type="checkbox">选项一<br />
<input type="checkbox">选项二<br />
<input type="checkbox">选项三<br />
<input type="checkbox">选项四<br />
</div>
</body>
3、选项卡
4、鼠标跟随
5、轮播图
四、补充
css transition 动画效果
html 自定义属性自定义属性(37条消息) HTML - 标签自定义属性_cjn.的博客-CSDN博客_标签自定义属性
CSS3 :nth-child() 选择器 (w3school.com.cn)
n从0取值,子选项按钮2开始,n+2取值就是(2,3,4,…)
事件委托JavaScript 事件委托详解 - 知乎 (zhihu.com)
new运算符new 运算符 - JavaScript | MDN (mozilla.org)
JS 中构造函数和普通函数的区别_构造函数和普通函数在定义上的区别_灵灵7的博客-CSDN博客
理解JS的prototype - 知乎 (zhihu.com)
flex 1 :『前端大白话』之 “flex:1” - 掘金 (juejin.cn)
flex-grow - CSS:层叠样式表 | MDN (mozilla.org)
