函数
函数是一段可以反复调用的代码块
函数的声明
function命令:function命令声明的代码区块,就是一个函数。function命令后边是函数名,函数名后边是一对圆括号,里面是传入函数的参数。函数体放在大括号里面。
function print(s){
console.log(s);
}
函数名的提升
js引擎将函数名视同变量名,所以采用function命令声明函数时,整个函数会像变量声名一样,被提升到代码头部
add();
function add(){}
函数参数
函数运行的时候,有时需要提供外部数据,不同的外部数据会得到不同的结果,这种外部数据就叫做参数
函数返回值
JS函数提供两个接口实现与外界的交互,其中参数作为入口,接收外界信息;返回值作为出口,把运算结果反馈给外界
温馨提示:return后边不能添加任何代码,因为不会执行
对象
对象是JS语言的核心概念,也是最重要的数据类型;对象就是一组“键值对”的集合,是一种无序的复合数据集合。对象的每一个键名又称为“属性”,他的”键值“可以是任何数据类型。如果一个属性的值为函数,通常把这个属性称为“方法”,它可以像函数那样调用
对象的读取方式:对象名.属性
如果属性的值还是一个对象,就形成了链式引用
math对象
Math是JS的原生对象,提供各种数学功能
Math.abs()方法返回参数值的绝对值
Math.max()和Math.min() 方法返回参数之中最大(小)值,如果参数为空,Math.min返回Infinity,Math.max返回-Infinity。
Math.floor向下取整,Math.ceil向上取整
Math.random()返回0-1之间的一个伪随机数,可能等于0,但一定小于1,任意范围的随机数生成函数如下:
function getRandomArbitrary(min,max){
return Math.random() * (max - min) + min;
}
getRandomArbitrary(5,10)
Date对象
Date对象是JS原生的时间库。
Date.now()方法返回当前时间距离时间零点的毫秒数,相当于Unix时间戳乘以1000
时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数
Date对象提供了一系列get方法,用来获取实例对象某个方面的值
![](https://i-blog.csdnimg.cn/direct/d09916e25e5e40e7ae5dd5f63b169199.png)
DOM概述
DOM是JS操作网页的接口,全称为“文档对象模型”(Domcument Object Model)。他的作用是将网页转为一个JS对象,从而可以用脚本进行各种操作(比如对元素增删内容)。
浏览器会根据DOM模型,将结构化文档HTML解析成一系列的节点,再由这些节点组成一个树状结构(DOM Tree)。所有的节点和最终的树状结构,都有规范的对外接口。
DOM只是一个接口规范,可以用各种语言实现。所以严格地说,DOM不是JS语法的一部分,但是DOM操作是JS最常见的任务,离开DOM,JS就无法控制页面,另一方面,JS也是最常用于DOM操作的语言。
节点的七个类型
节点树
一个文档的所有节点,按照所在的层级,可以抽象成一种树状结构。这种树状结构就是DOM树。他有一个顶层节点,下一层都是顶层节点的子节点,然后子节点又有自己的子节点,就这样层层衍生出一个金字塔结构,倒过来就像一棵树。
Node.nodeType属性
不同节点的nodeType属性值和对应的常量如下:
Document对象_方法/获取元素
document.getElementsByTagName()
document.getElementsByTagName方法搜索HTML标签名,返回符合条件的元素。它的返回值是一个类似数组对象(HEMLCollection实例),可以实时反映HTML文档的变化。如果没有任何匹配的元素,就返回一个空集。
如果传入*,就可以返回文档中所有HTML元素
document.getElementsByClassName()
document.getElementsByClassName方法返回一个类似数组的对象(HTML Collection实例),包括了所有class名字符合指定条件的元素,元素的变化实时反映在返回结果中
由于class是保留字,所以JS一律使用className表示CSS的class,参数可以是多个class,他们之间使用空格分隔
document.getElementsByName()
document.getElementsByName方法用于选择拥有name属性的HTML元素(比如<form>、<radio>、<img>等),返回一个类似数组的对象(NodeList实例,因为name属性相同的元素可能不止一个)
document.getElementsById()
document.querySelector()
接受一个CSS选择器作为参数,返回匹配该选择器的元素节点,如果有多个节点满足匹配条件,则返回第一个匹配的节点。如果没有发现匹配的节点,则返回null。
document.querySelectorAll()
与上边一个类似,区别是返回一个NodeList对象,包含所有匹配给定选择器的节点。
Document对象_方法/创建元素
document.createElement()
方法用来生成元素节点,并返回该节点
document.createTextNode()
用来生成文本节点(Text实例),并返回该节点。它的参数是文本节点的内容
document.createAttribute()
生成一个新的属性节点(Attr实例),并返回它
Element对象_属性
Element对象对应网页的HTML元素。每一个HTML元素,在DOM树上都会转化成一个Element节点对象(以下简称元素节点)
Element.id
属性返回指定元素的id属性,该属性可读写
Element.className
属性用来读写当前元素节点的class属性。他的值是一个字符串,每个class之间用空格分割
Element,classList
classList对象有下列方法:
Element.innerHTML
Element.innerHTML属性返回一个字符串,等同于该元素包含的所有HTML代码。该属性可读写,常用来设置某个节点的内容。他能改写所有元素节点的内容,包括<HTML>和<body>元素
//innerHTML和innerText的区别:
innerHTML可以识别标签;innerText会把标签识别成一个字符串
Element获取元素位置
属性 | 描述 |
clientHeight | 获取元素高度padding部分,但是不包括border、margin |
clientWidth | 获取元素宽度padding部分,但是不包括border、margin |
scrollHeight | 元素总高度,它包括padding,但是不包括border、margin包括溢出的不可见内容 |
scrollWidth | 元素总宽度,它包括padding,但是不包括border、margin包括溢出的不可见内容 |
scrollLeft | 元素的水平滚动条向右滚动的像素数量 |
scrollTop | 元素的垂直滚动条向下滚动的像素数量 |
offsetHeight | 元素的CSS垂直高度(单位像素),包括元素本身的高度、padding和border |
offsetWidth | 元素的CSS水平宽度(单位像素),包括元素本身的高度、padding和border |
offsetLeft | 到定位父级左边界的间距 |
offsetTop | 到定位父级上边界的间距 |
CSS操作
HTML元素的style属性
操作CSS样式最简单的方法,就是使用网页元素节点的setAttribute方法直接操作网页元素的style属性
元素节点的style属性
cssTest属性
事件处理程序
1)
缺点:HTML和JS没有分开
2)
优势:HTML和JS是分离的
缺点:无法同时添加多个事件
3)
优点:事件不会被覆盖
缺点:写起来麻烦
事件类型之鼠标事件
温馨提示:这些方法在使用的时候,除了DOM2级事件,都需要添加前缀on
Event事件对象
事件发生以后,会产生一个事件对象,作为参数传给监听函数。
Event对象属性
1、Event.Target:属性返回事件当前所在的节点
2、Event.type:属性返回一个字符串,表示事件类型。事件的类型是在生成事件的时候。该属性只读。
Event对象方法
1、Event.preventDafault():取消浏览器对当前事件的默认行为。 //阻止默认行为
2、Event.stopPropagation():阻止事件在DOM中继续传播,防止再触发定义在别的节点上的监听函数,但是不包括在当前节点上其他的事件监听函数
事件类型之键盘事件
主要有keydown、keypress、keyup三个事件
enter对象
keyCode:唯一标识
事件类型之表单事件
表单事件是使用表单元素及输入框元素可以监听的一系列事件
1.input事件
input事件当<input>、<select>、<textarea>的值发生变化时触发。对于复选框(<input type = checkbox>)或单选框(<input type = radio>),用户改变选项时,也会触发这个事件。
input事件的一个特点,就是会连续触发,比如用户每按下一次按键,就会触发一次input事件。
2.select事件
select事件当在<input>、<textarea>里面选中文本时触发
3.Change事件
Change事件当<input>、<select>、<textarea>的值发生变化时触发。它与input事件的最大不同,就是不会连续触发,只有当全部修改完成时才会触发
4.reset事件
5.submit事件
4.5俩个事件发生在表单对象中
事件代理(事件委托)
父元素系统处理子元素事件;
由于事件会在冒泡阶段向上传播到父节点,因此可以把子节点的监听函数定义在父结点上,由父节点的监听函数统一处理多个子元素的事件。这种方法叫做事件的代理。
定时器
定时器之setTImeout()
JS提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()和setInterval()这两个函数来完成。他们向任务队列添加定时任务;
setTimeout函数用来指定某个函数或某段代码,在多少毫秒之后执行。它返回一个整数,表示定时器的编号,以后可以用来取消这个定时器。
var timeId = setTimeout(func|code,delay);
温馨提示:如果回调函数是对象的方法,那么setTimeout使得方法内部的this关键字指向全局环境,而不是定义时所在的那个对象
定时器可以取消
var id = setTimeout(f,1000);
clearTimeout(id);
定时器之setInterval()
setInterval函数的用法与setTimeout完全一致,区别仅仅在于setInterval指定某个任务每隔一段时间就执行一次,也就是无限次的定时执行
防抖(debounce)
防抖严格算起来应该属于性能优化的知识,但实际上遇到的频率相当高,处理不当或者放任不管就容易引起浏览器卡死。
定义:对于短时间内连续触发的事件(上边的滚动事件),防抖的含义就是让某个时间期限(如上面的1000毫秒)内,事件处理函数只执行一次。
节流(throttle)
如果一直拖着滚动条进行滚动,那么会以xxms的时间间隔,持续输出当前位置和顶部的位置
命令行工具
命令行常用工具:
1.CMD命令行工具
2.PowerShell命令行工具
CMD命令行
选择盘符:盘符名称:
查看盘符及目录下边的文件与文件夹:dir
清空命令行信息:cls
进入文件或文件夹:cd 文件名
返回上一级目录:cd ../
快速补全文件名称:tab
创建文件夹:mkdir 文件夹名称
查看历史输入过的内容:上下按键
PowerShell
打开方式:
1.在开始位置搜索PowerShell打开
2.在对应目录按住shift + 右键,打开