定时器 一: 1 setI(这是大写的i)nterval 语法:setInterval(函数,数字) 函数:每次定时器重新执行的时候,要做的事情(要执行的代码) 数字:当前定时器每个多长时间重新执行一次,单位是毫秒 2 setTimeout 语法:setTimeout(函数,数字) 函数:倒计时器执行的时候,要做的事情(要执行的代码) 数字:当前倒计时延迟多长时间执行(只会执行一次)单位是毫秒 当数字再不写时或者为0时,执行速度会按照最快的速度执行 最快速度一般为4~20毫秒,最快速度与电脑性能有关
二:定时器的返回值 意义:表明当前定时器是这个页面的第几个定时器 注意:如果页面的打开方式是利用liveserver启动,那么定时器的id,会不太一样 作用:能够利用返回值关闭这个定时器 关闭语法1:clearInterval(要关闭的定时器的返回值) 关闭语法1:clearTimeoutl(要关闭的定时器的返回值) 注意:关闭语法可以混用,所以只要关闭定时器,随便写上面哪个都可以 但是推荐对应的书写,目的是为了让别人一眼看出关闭的是定时器还是倒计时器
js异步任务 js是单线程的,同一时间只能做同一件事 如果只有单线程那么可能会遇到一些问题 上述的方案 如果遇到一个中间的代码 耗时很久, 那么后续的所有代码, 都需要等待上边的代码执行完毕后在执行 * 这种情况给用户的感觉就是非常卡顿 所以为了解决上述的问题,js将代码分为两个任务 同步任务: 目前所接触的内容中,除了两个定时器之外的都是同步任务 异步任务: 目前所接触的内容中,只有两个定时器算是异步任务,将来还会有新的异步任务
js中代码执行的顺序 代码从上往下执行 先将代码中所有的同步任务,全部都执行一遍 同步任务执行完毕后,再执行异步任务 如果在代码的中间遇见了异步任务,那么先将异步任务暂存到一个任务队列中,等待所有同步任务执行完毕后执行
BOM
1:浏览器的对象模型
BOM 其实就是 浏览器提供给我们操作浏览器的一个能力
* 获取浏览器的宽高
* 获取浏览器页面卷去的高度
* 通过JS控制页面的跳转
* 获取浏览器地址栏的信息
* 操作浏览器页面的滚动条
* 获取到浏览器的版本
* 打开浏览器的弹窗
核心:页面中有一个对象叫做window
window 是 JS 内置的一个对象, 上述所有的方法都可以利用 window 内部提供的一些东西解决
扩展:
* 我们所有的全局变量(函数以外的地方声明变量) 和 全局函数(函数以外的地方声明的函数)
*
* 全都存放在 window 对象中
*
* window 对象中有一个属性叫做 name,
* 所以我们在开发的时候, 尽量避免全局变量或者全局函数的名字叫做name
*/
一: 获取浏览器的窗口尺寸(宽高)
注意:当前方法是包含浏览器的滚动条的
console.log('浏览器当前宽度: ', window.innerWidth)
// console.log('浏览器当前高度: ', window.innerHeight)
二:打开浏览器提供的弹出框
1:prompt(用户输入框)会有一个返回值,就是用会输入的内容,永远是字符串格式
window.prompt('弹出框2: window.prompt')
console.log(‘我叫张丹阳’)
2:alert (弹出框)弹出框会中断(暂停)程序的运行,直到关闭弹出框。
// console.log('JS 开始')
// alert("提示信息1: alert")
// console.log('JS 运行到一半')
// window.alert('提示信息2: window.alert')
// console.log('JS运行完毕')
3:confirm(用户询问框)会有一个返回值,如果点确定返回true,否则返回false
var res = window.confirm('您确定删除吗?')
console.log('用户确定与否: ', res)
三:浏览器的地址信息
location(专门用来存储浏览器地址栏内的信息)
在 window 对象中有一个对象 location, 他的内部存储的就是 浏览器地址的信息
location.href:
专门存储浏览器地址栏内 url 地址的信息
* 语法: var url = window.location.href
* 我们也可以给这个属性赋值, 这样就会跳转到我们复制的地址了
window.location.href = 'www.baidu.com'
location.reload
location.reload 会重新加载页面, 相当于刷新
* 注意: 不要写在全局内, 否则浏览器会一直刷新
window.location.reload()
四:浏览器的历史记录
history(专门用来存储历史记录信息)
history.back
history.back 用来回退历史纪录的, 就是回到前一个页面, 相当于浏览器左上角的 ← 按钮
注意: 我们需要有上一条记录, 不然就一直在这个页面 不会回退
语法:
window.history.back()
history.forward
// * history.forward 是去到下一个历史记录里面, 也就是去到下一个页面, 就相当于 浏览器左上角的 → 按钮
// * 注意: 前提是我们之前有过回退操作, 不然的话我们现在就是在最后一个页面, 没有下一个
语法:
window.history.forward()
五:浏览器的版本信息
windows中的 navigator 可以获取浏览器的版本信息
六:浏览器事件
1:浏览器加载延迟事件
window.onload = function () {
/**
* 在以前开发的时候, 我们会将 所有的 JS 代码, 全都放在这个函数中运行
*
* 因为在这个函数中运行的时候, 可以保证页面所有的资源已经加载完毕了, 比如 标签, 图片
*/
console.log('当前函数不需要调用, 会在当前页面的所有资源加载完毕的时候执行')
}
2:浏览器滚动事件
window.onscroll = function () {
console.log('当前函数也不需要调用, 会在浏览器发生滚动事件的时候执行')
}
七:浏览器的滚动距离
注意:滚动事件发生的时候,浏览器的位置一致没变,而是浏览器内的页面发生了滚动
两种写法:
这两种是向上滚动
1:document.body.scrollTop
2:document.documentElement.scrollTop
向左滚动
1:document.body.scrollLeft 2:document.documentElement.scrollLef
区别:
如何区分
* 谷歌 火狐
* 如果 页面 声明 那么需要使用 documentElement
* 否则使用 body
*
* IE (了解)
* 如果没有 声明 那么使用两个都没问题
* 如果 声明了 那么只能使用 documentElement
*
* Safari
* 两个都不用, 使用一个单独的方法 window.pageYOffset
*/
js写法:
window.onscroll = function () {
console.log(document.body.scrollLeft)
console.log(document.documentElement.scrollLeft)
八:本地存储
意思:把一些常用信息存储在用户的电脑本地(存储在浏览器中)
localStorage
特点:
1:浏览器的本地存储,持久化存储,存储之后不手动删除,那么永久存在
2:在存储的时候,只能存储基本数据类型中的字符串
3:如果需要存储其他数据类型,需要借助JSON提供的方法
4:可以实现跨页面通讯
JSON提供的方法让其他数据类型转为JSON格式的字符串,然后存储到本地存储中:
JSON.stringify
还原格式: JSON.parse
本地存储里面的增 删 查 1: 增: setitem(关键词) 实现一个本地存储(localStorage) 语法:window.localStorage.setItem('box','203856')(括号里面第一个单引号是存储的表示是什么。第二个单引号要存储什么内容)(第一个单引号是key,第二个单引号是value)
查: 可以获取之前存储到本地的一些数据 getitem(关键字) 语法: console.log('box',window.localstorage.getitem('box'))或者 var qq = window.localstorage.getitem('qq') console.log('qq',qq) 注意:此时这个box还是这个qq都是起的名字 删除: removeitem(关键词) 语法:window.localstorage.removeitem(‘key’) 注意:以后在公司开发的时候,建议只用删除,别用清空。目的是为了自己的操作不影响同事的代码 清空: clear(关键词) 语法:window.localstorage.clear()