当前位置:
首页 >
前端技术
> javascript
>内容正文
javascript
JavaScript学习笔记(6)BOM(浏览器对象模型)pc网页特效(停止学习)
生活随笔
收集整理的这篇文章主要介绍了
JavaScript学习笔记(6)BOM(浏览器对象模型)pc网页特效(停止学习)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
文章目录
- 什么是BOM(浏览器对象模型)
- BOM中的window对象(顶级对象)
- window对象常见事件
- 窗口加载事件 window.onload(等待文档内容全部加载完成才会触发,这样可以把js代码写在任何位置)使用方法:window.addEventListener('load', function() {})(这种方法可使用多个)
- 文档加载事件 使用方法:document.addEventListener('DOMContentLoaded', function() {})(可以不等待样式表、图片、flash等加载完成,提高页面交互效率)
- 调整窗口大小事件(只要窗口大小变化就会触发事件,可用于响应式布局)使用方法:window.addEventListener('resize', function () {})、window.innerWidth获取窗口宽度
- 定时器
- window.setTimeout() 单次定时器
- 回调(diao)函数是什么?callback
- setTimeout 定时器案例:5秒后自动关闭广告
- 停止定时器 clearTimeout
- window.setInterval() 循环定时器
- 京东秒杀倒计时案例
- 停止setInterval定时器: clearInterval()
- 案例:手机短信验证码请求倒计时限制
- this指向问题
- JS线程问题(同步和异步)
- 同步与异步
- 一个问题
- JS执行机制:先执行同步任务,再执行异步任务
- 事件循环 event loop
- location对象
- url(uniform resource locator 统一资源定位符)通过location.href查看
- 通过浏览器查看location或location.href属性
- 案例:不通过按钮点击,时间一到,自动跳转页面
- 案例:数据在不同页面中的传递
- location对象的方法(location.assign() 跳转页面,可后退)(location.replace() 跳转页面,不可后退,跟location.href()一样)(location.reload() 刷新或强制刷新页面)
- navigator 对象(用来判断是什么设备打开页面,是移动端还是pc端)
- history对象
- pc网页特效(略)
什么是BOM(浏览器对象模型)
BOM中的window对象(顶级对象)
window对象常见事件
窗口加载事件 window.onload(等待文档内容全部加载完成才会触发,这样可以把js代码写在任何位置)使用方法:window.addEventListener(‘load’, function() {})(这种方法可使用多个)
<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><script>// window.onload = function() {// var btn = document.querySelector('button');// btn.addEventListener('click', function() {// alert('点击我');// })// }// window.onload = function() {// alert(22);// }window.addEventListener('load', function() {var btn = document.querySelector('button');btn.addEventListener('click', function() {alert('点击我');})})window.addEventListener('load', function() {alert(22);})document.addEventListener('DOMContentLoaded', function() {alert(33);})// load 等页面内容全部加载完毕,包含页面dom元素 图片 flash css 等等// DOMContentLoaded 是DOM 加载完毕,不包含图片 falsh css 等就可以执行 加载速度比 load更快一些</script> </head><body><button>点击</button></body></html>文档加载事件 使用方法:document.addEventListener(‘DOMContentLoaded’, function() {})(可以不等待样式表、图片、flash等加载完成,提高页面交互效率)
代码见上
调整窗口大小事件(只要窗口大小变化就会触发事件,可用于响应式布局)使用方法:window.addEventListener(‘resize’, function () {})、window.innerWidth获取窗口宽度
<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><style>div {width: 200px;height: 200px;background-color: pink;}</style> </head><body><script>window.addEventListener('load', function () {var div = document.querySelector('div');window.addEventListener('resize', function () {console.log(window.innerWidth);console.log('变化了');if (window.innerWidth <= 800) {div.style.display = 'none';} else {div.style.display = 'block';}})})</script><div></div> </body></html>
定时器
window.setTimeout() 单次定时器
<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title> </head><body><script>// 1. setTimeout // 语法规范: window.setTimeout(调用函数, 延时时间);// 1. 这个window在调用的时候可以省略// 2. 这个延时时间单位是毫秒 但是可以省略,如果省略默认的是0// 3. 这个调用函数可以直接写函数 还可以写 函数名 还有一个写法 '函数名()'// 4. 页面中可能有很多的定时器,我们经常给定时器加标识符 (名字)// setTimeout(function() {// console.log('时间到了');// }, 2000);function callback() {console.log('爆炸了');}var timer1 = setTimeout(callback, 3000);var timer2 = setTimeout(callback, 5000);// setTimeout('callback()', 3000); // 我们不提倡这个写法</script> </body></html>回调(diao)函数是什么?callback
setTimeout 定时器案例:5秒后自动关闭广告
<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title> </head><body><img src="蜥蜴女仆.gif" alt="" class="ad"><script>var ad = document.querySelector('.ad');setTimeout(function () {ad.style.display = 'none';}, 5000);</script> </body></html>停止定时器 clearTimeout
<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title> </head><body><button>点击停止定时器</button><script>var btn = document.querySelector('button');var timer = setTimeout(function() {console.log('爆炸了');}, 5000);btn.addEventListener('click', function() {clearTimeout(timer);})</script> </body></html>window.setInterval() 循环定时器
<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title> </head><body><script>// 1. setInterval // 语法规范: window.setInterval(调用函数, 延时时间);setInterval(function () {console.log('继续输出');}, 1000);// 2. setTimeout 延时时间到了,就去调用这个回调函数,只调用一次 就结束了这个定时器// 3. setInterval 每隔这个延时时间,就去调用这个回调函数,会调用很多次,重复调用这个函数</script> </body></html>京东秒杀倒计时案例
停止setInterval定时器: clearInterval()
<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title> </head><body><button class="begin">开启定时器</button><button class="stop">停止定时器</button><script>var begin = document.querySelector('.begin');var stop = document.querySelector('.stop');var timer = null; // 全局变量 null是一个空对象begin.addEventListener('click', function() {timer = setInterval(function() {console.log('ni hao ma');}, 1000);})stop.addEventListener('click', function() {clearInterval(timer);})</script> </body></html>案例:手机短信验证码请求倒计时限制
<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title> </head><body>手机号码: <input type="number"> <button>发送</button><script>// 按钮点击之后,会禁用 disabled 为true // 同时按钮里面的内容会变化, 注意 button 里面的内容通过 innerHTML修改// 里面秒数是有变化的,因此需要用到定时器// 定义一个变量,在定时器里面,不断递减// 如果变量为0 说明到了时间,我们需要停止定时器,并且复原按钮初始状态var btn = document.querySelector('button');var time = 3; // 定义剩下的秒数btn.addEventListener('click', function() {btn.disabled = true;var timer = setInterval(function() {if (time == 0) {// 清除定时器和复原按钮clearInterval(timer);btn.disabled = false;btn.innerHTML = '发送';} else {btn.innerHTML = '还剩下' + time + '秒';time--;}}, 1000);})</script> </body></html>this指向问题
<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title> </head><body><button>点击</button><script>// this 指向问题 一般情况下this的最终指向的是那个调用它的对象// 1. 全局作用域或者普通函数中this指向全局对象window( 注意定时器里面的this指向window)console.log(this);function fn() {console.log(this);}window.fn();window.setTimeout(function() {console.log(this);}, 1000);// 2. 方法调用中谁调用this指向谁var o = {sayHi: function() {console.log(this); // this指向的是 o 这个对象}}o.sayHi();var btn = document.querySelector('button');// btn.onclick = function() {// console.log(this); // this指向的是btn这个按钮对象// }btn.addEventListener('click', function() {console.log(this); // this指向的是btn这个按钮对象})// 3. 构造函数中this指向构造函数的实例function Fun() {console.log(this); // this 指向的是fun 实例对象}var fun = new Fun();</script> </body></html>JS线程问题(同步和异步)
同步与异步
一个问题
打印结果是1、2、3
回调函数属于异步任务,不属于同步任务
JS执行机制:先执行同步任务,再执行异步任务
示例:
执行逻辑:
事件循环 event loop
<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title> </head><body><script>// 第一个问题// console.log(1);// setTimeout(function() {// console.log(3);// }, 1000);// console.log(2);// 2. 第二个问题// console.log(1);// setTimeout(function() {// console.log(3);// }, 0);// console.log(2);// 3. 第三个问题console.log(1);document.onclick = function() {console.log('click');}console.log(2);setTimeout(function() {console.log(3)}, 3000)</script> </body></html>location对象
url(uniform resource locator 统一资源定位符)通过location.href查看
通过浏览器查看location或location.href属性
案例:不通过按钮点击,时间一到,自动跳转页面
<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title> </head><body><button>点击</button><div></div><script>var btn = document.querySelector('button');var div = document.querySelector('div');btn.addEventListener('click', function() {// console.log(location.href);location.href = 'http://www.itcast.cn';})var timer = 5;setInterval(function() {if (timer == 0) {location.href = 'http://www.itcast.cn';} else {div.innerHTML = '您将在' + timer + '秒钟之后跳转到首页';timer--;}}, 1000);</script> </body></html>
案例:数据在不同页面中的传递
index.html
login.html
<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title> </head><body><form action="index.html">用户名: <input type="text" name="uname"><input type="submit" value="登录"></form> </body></html>
location对象的方法(location.assign() 跳转页面,可后退)(location.replace() 跳转页面,不可后退,跟location.href()一样)(location.reload() 刷新或强制刷新页面)
<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title> </head><body><button>点击</button><script>var btn = document.querySelector('button');btn.addEventListener('click', function() {// 记录浏览历史,所以可以实现后退功能// location.assign('http://www.itcast.cn');// 不记录浏览历史,所以不可以实现后退功能// location.replace('http://www.itcast.cn');location.reload(true);})</script> </body></html>navigator 对象(用来判断是什么设备打开页面,是移动端还是pc端)
history对象
index.html
list.html
<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title> </head><body><a href="index.html">点击我去往首页</a><button>后退</button><script>var btn = document.querySelector('button');btn.addEventListener('click', function() {// history.back();history.go(-1);})</script> </body></html>
pc网页特效(略)
https://www.bilibili.com/video/BV1Sy4y1C7ha?p=287&spm_id_from=pageDriver
总结
以上是生活随笔为你收集整理的JavaScript学习笔记(6)BOM(浏览器对象模型)pc网页特效(停止学习)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: JavaScript学习笔记(5)
- 下一篇: JavaScript学习笔记(7)PC端