-
目录
-
JS执行机制
-
先执行执行栈里面的同步任务。
-
异步任务放入任务队列中。
-
一旦执行栈中的所有同步任务执行完毕,系统就会按次序读取任务队列中的异步任务,于是被读取异步任务结束等待状态,进入执行栈,开始执行。
-
事件循环:主线程不断地获得任务、执行任务、再获取任务
-
异步进程处理
-
location对象
-
window对象下的location对象,获取或者设置窗体的url,因为这个属性返回的是一个对象
-
URL:统一资源定位符,
-
是互联网上的标准资源地址,互联网上的每个文件,都有唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
-
-
获取或者设置整个URL:location.href
-
返回主机(域名):location.host
-
返回端口号:location.port
-
返回参数:location.search
-
返回片段(#后面内容,常见于链接锚点):location.hash
-
-
五秒之后自动跳转页面案例
-
利用定时器
-
时间到了,就添加使用location.href
-
案例
<!DOCTYPE html> <html lang="en"> <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> </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'; } div.innerHTML = '您将在' + timer + '之后跳转到首页'; timer--; }, 1000); </script> </body> </html>
-
结果
-
-
获取URL参数案例
-
1第一个登陆页面,里面有提交表单,action提价到index.html页面
-
2.第二个页面可以使用第一个页面的参数,location.search参数
-
在第二个页面中,需要把?username = red里面的参数red单独提取出来
-
第一步去掉?利用substr截取字符串,语法substr('起始位置',截取几个字符)
-
第二步,利用=号分隔键和值split(‘=’)
-
案例
-
index.html
<!DOCTYPE html> <html lang="en"> <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> </head> <body> <div></div> <script> console.log(location.search);//得到?uname=red //1.先去掉问号 substr('起始位置',截取几个字符) var params = location.search.substr(1,); console.log(params); //2.利用=号将字符串分隔为数组,split('=')分隔 var arr = params.split('='); console.log(arr);//得到数组['uname' , 'red'] var div = document.querySelector('div'); //3.把分隔出来的数据写入div中 div.innerHTML = arr[1] + '欢迎您';//得到red </script> </body> </html>
-
<!DOCTYPE html> <html lang="en"> <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> </head> <body> <!-- 提交给index.html页面 --> <form action="index.html"> 用户名:<input type="text" name="uname"> <input type="submit" value="登录"> </form> </body> </html>
-
-
结果
-
跳转之前的结果
-
-
跳转之后的结果
-
-
location对象的方法
-
location.assign()
-
跟href一样,可以跳转页面
-
-
location.replace()
-
替换当前页面,因为不记录历史,所以不能后退
-
-
location.reload()
-
重新加载页面,相当于刷新按钮
-
参数如果为true强制刷新
-
案例
<!DOCTYPE html> <html lang="en"> <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> </head> <body> <button>点击</button> <script> var btn = document.querySelector('button'); btn.addEventListener('click', function () { //location.assign('http://www.itcast.cn');//assign记录浏览历史可以实现后退功能 location.replace('http://www.itcase.cn');//replace不记录浏览历史,所以不能后退 location.reload();//相当于刷新按钮 }) </script> </body> </html>
-
-
-
navigator对象
-
包含有关浏览器信息
-
userAgent
-
返回客户机发送服务器的user-agent头部的值
-
-
下面代码可以判断用户那个终端夜绵绵打开页面,实现跳转
-
-
history对象
-
back()可以后退功能
-
forward()前进功能
-
go(参数) 前进后退功能,参数如果是1前进一个页面,-1 是后退一个页面
-
-
-
PC端特效
-
元素偏移量offset系列
-
动态获取元素的位置、大小等
-
获取元素自身的大小
-
获取元素距离带有定位父元素的位置
-
注意:返回的数值不带单位
-
element.offsetParent
-
返回作为该元素带有定位的父级元素,如果没有父级元素就返回body
-
-
element.offsetTop
-
返回元素相对带有定位元素上方偏移
-
-
element.offsetLeft
-
返回元素相对带有定位元素左方偏移
-
-
element.offsetWidth
-
返回自身包括padding、边框、内容区的宽度,返回数值不带单位
-
-
element.offsetHeight
-
返回自身包括padding、边框、内容区的宽度,返回数值不带单位
-
-
案例
<!DOCTYPE html> <html lang="en"> <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; } .father { /* 如果想要得到子盒子到父亲的距离,必须要给父亲添加定位 */ position: relative; width: 200px; height: 200px; background-color: aquamarine; margin: 150px; } .son { width: 100px; height: 100px; background-color: antiquewhite; margin-left: 45px; } .w { width: 200px; height: 200px; background-color: skyblue; margin: 0 auto 200px; padding: 10px; border: 15px solid red; } </style> </head> <body> <div class="father"> <div class="son"></div> </div> <div class="w"></div> <script> var father = document.querySelector('.father'); var son = document.querySelector('.son'); //1可以得到元素的偏移 返回的不带单位 console.log(father.offsetTop); console.log(father.offsetLeft); //他以带单位的父盒子为准 ,如果复合子没有定位,则以body为准 console.log(son.offsetLeft); //2可以得到元素大小宽度和高度 包含padding+border+width var w = document.querySelector('.w'); console.log(w.offsetWidth); console.log(w.offsetHeight); //3.返回带有定位的父亲 否则返回的是body console.log(son.offsetParent); console.log(son.parentNode);//parentNode返回父亲 是最近一级的父亲 不管有没有定位 </script> </body> </html>
-
结果
-
-
offset与style的区别
-
获取元素大小使用offset
-
改变元素值,则需要用style
-
案例
<!DOCTYPE html> <html lang="en"> <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> .box { width: 200px; height: 200px; background-color: #ccc; } </style> </head> <body> <div class="box" style="width:200px;"></div> <script> var box = document.querySelector('.box'); console.log(box.offsetWidth);//offset行内样式表和内嵌样式表的值都可以得到 console.log(box.style.width);//style只能获取行内样式表的值 //box.offsetWidth = '300px';//此代码无效 不能改变 box.style.width = '300px';//代码有效 width改变为300px </script> </body> </html>
-
结果
-
-
获取鼠标在盒子内的坐标案例
-
利用e.pagex,e.pagey获得鼠标在页面的坐标
-
得到盒子在页面中的坐标box.offsetLeft、box.offsetTop
-
用鼠标距离页面的坐标减去盒子在页面的距离就可以得到
-
想要一定鼠标就获得最新的坐标,使用mousemove
-
案例
<!DOCTYPE html> <html lang="en"> <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> .box { width: 200px; height: 200px; background-color: antiquewhite; margin: 200px; } </style> </head> <body> <div class="box"></div> <script> var box = document.querySelector('.box'); box.addEventListener('mousemove', function (e) { /* console.log(e.pageX); console.log(e.pageY); console.log(box.offsetLeft); */ var x = e.pageX - this.offsetLeft; var y = e.pageY - this.offsetTop; this.innerHTML = 'x坐标是' + x + 'y坐标是' + y; }) </script> </body> </html>
-
结果
-
-
JavaScript学习笔记15
最新推荐文章于 2024-11-02 19:19:35 发布