一、回调函数
二、事件流
2.1事件捕获
2.2事件冒泡
//阻止冒泡
ev.stopPropagation()
鼠标经过事件:
mouseover 和 mouseout 会有冒泡效果
mouseenter 和 mouseleave 没有冒泡效果 (推荐)
2.3事件委托
利用事件流的特征,可以对上述的代码进行优化,事件的的冒泡模式总是会将事件流向其父元素的,如果父元素监听了相同的事件类型,那么父元素的事件就会被触发并执行
2.4 页面加载事件
加载外部资源(如图片、外联CSS和JavaScript等)加载完毕时触发的事件
有些时候需要等页面资源全部处理完了做一些事情
事件名:load
监听页面所有资源加载完毕:
window.addEventListener('load', function() {
// xxxxx
})
2.5元素滚动事件
window.addEventListener('scroll', function() {
// xxxxx
})
2.6页面尺寸事件
window.addEventListener('resize', function() {
// xxxxx
})
2.7元素尺寸与位置
获取元素的自身宽高、包含元素自身设置的宽高、padding、border
offsetWidth和offsetHeight
获取出来的是数值,方便计算
注意: 获取的是可视宽高, 如果盒子是隐藏的,获取的结果是0
三、日期对象
// 1. 实例化
const date = new Date();
// 2. 调用时间对象方法
// 通过方法分别获取年、月、日,时、分、秒
const year = date.getFullYear(); // 四位年份
getFullYear 获取四位年份
getMonth 获取月份,取值为 0 ~ 11
getDate 获取月份中的每一天,不同月份取值也不相同
getDay 获取星期,取值为 0 ~ 6
getHours 获取小时,取值为 0 ~ 23
getMinutes 获取分钟,取值为 0 ~ 59
getSeconds 获取秒,取值为 0 ~ 59
四、时间戳
// 1. 实例化
const date = new Date()
// 2. 获取时间戳
console.log(date.getTime())
// 还有一种获取时间戳的方法
console.log(+new Date())
// 还有一种获取时间戳的方法
console.log(Date.now())
五、DOM节点
-
createElement
动态创建任意 DOM 节点 -
cloneNode
复制现有的 DOM 节点,传入参数 true 会复制所有子节点 -
appendChild
在末尾(结束标签前)插入节点 -
cloneNode
复制现有的 DOM 节点,传入参数 true 会复制所有子节点 -
insertBefore
在父节点中任意子节点之前插入新节点 -
removeChild
删除节点时一定是由父子关系。 -
childNodes
获取全部的子节点,回车换行会被认为是空白文本节点 -
children
只获取元素类型节点 -
parentNode
获取父节点,以相对位置查找节点,实际应用中非常灵活。 -
previousSibling
获取前一个节点,以相对位置查找节点,实际应用中非常灵活。 -
nextSibling
获取后一个节点,以相对位置查找节点,实际应用中非常灵活。
六、定时器-延迟函数
JavaScript 内置的一个用来让代码延迟执行的函数,叫 setTimeout
setTimeout(回调函数, 延迟时间)
清除延时函数:
clearTimeout(timerId)
七、本地存储
作用: 数据可以长期保留在本地浏览器中,刷新页面和关闭页面,数据也不会丢失
特性:以键值对的形式存储,并且存储的是字符串, 省略了window
// 本地存储 - localstorage 存储的是字符串
// 1. 存储
localStorage.setItem('age', 18)
// 2. 获取
console.log(typeof localStorage.getItem('age'))
// 3. 删除
localStorage.removeItem('age')
localStorage 存储复杂数据类型
JSON.stringify(复杂数据类型)
JSON字符串:
-
首先是1个字符串
-
属性名使用双引号引起来,不能单引号
-
属性值如果是字符串型也必须双引号
八、数组map 方法
map 可以遍历数组处理数据,并且返回新的数组
九、数组join方法
join() 方法用于把数组中的所有元素转换一个字符串
十、正则表达式
正则表达式(Regular Expression)是一种字符串匹配的模式(规则)
使用场景:
-
例如验证表单:手机号表单要求用户只能输入11位的数字 (匹配)
-
过滤掉页面内容中的一些敏感词(替换),或从字符串中获取我们想要的特定部分(提取)等
正则基本使用
-
定义规则
const reg = /表达式/
-
其中
/ /
是正则表达式字面量 -
正则表达式也是
对象
-
-
使用正则
-
test()方法
用来查看正则表达式与指定的字符串是否匹配 -
如果正则表达式与指定的字符串匹配 ,返回
true
,否则false
-
元素.classList.contains() 看看有没有包含某个类,如果有则返回true,么有则返回false