以下是对Javascript操作BOM对象与DOM的学习
操作BOM对象(重点)
浏览器介绍 JavaScript 和浏览器关系? JavaScript诞生就是伪类能够让他在浏览器中运行!BOM:浏览器对象模型
内核
IE 6-11
Chrome
Safari
FireFox
Opera
window(重要)
window代表浏览器窗口
1 2 3 4 5 6 7 8 9 10 window .alert(1 )undefined window .innerHeight271 window .innerWidth1088 window .outerHeight805 window .outerWidth1104
Navigator(不建议使用)
navigator,封装了浏览器的信息
1 2 3 4 5 6 navigator.appVersion"5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36" navigator.userAgent"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36" navigator.platform"Win32"
大多数时候,我们不会使用navigator对象,因为会被人为修改! 不建议使用这些属性来判断和编写代码
screen 代表屏幕尺寸
1 2 3 4 screen.width1536 screen.height864
location (重要)
location代表当前页面的URL信息
1 2 3 4 5 host:"www.baidu.com" href: " https://www.baidu.com/" protocol: "https:" reload: ƒ reload() // 刷新网页 location.assign('https://pengzhenglong.github.io/' )// 设置新的地址
document(内容)
document代表当前的页面,HTML DOM文档树
1 2 3 4 document .title"百度一下,你就知道" document .title='DragonPeng' "DragonPeng"
获取具体的文档树节点
1 2 3 4 5 6 7 8 9 <dl id ="app" > <dt > java</dt > <dd > javase</dd > <dd > javaEE</dd > </dl > <script > var dl = document .getElementById('app' ); </script >
获取cookie
劫持cookie原理
1 2 <script src ="aa.js" > </script >
服务端可以设置cookie:httpOnly
history(不建议使用)
history代表浏览器的历史记录
1 2 history.back() // 后退 history.forward()// 前进
操作DOM对象(重点)
核心
浏览器网页就是一个Dom树形结构!
更新:更新Dom节点
遍历Dom节点:得到Dom节点
删除:删除一个Dom节点
添加:添加一个新的节点 要操作一个Dom节点,就必须要先获得这个Dom节点
获取dom节点
1 2 3 4 5 6 7 8 var h1 = document .getElementsByTagName('h1' );var h1 = document .getElementById('p1' );var p2 = document .getElementsByClassName('p2' );var father = document .getElementById('father' );var childrens = father.children[index];
这是原生代码,之后我们尽量都使用JQuery();
更新节点
操作文本
1 2 id1.innerText='456' // 修改文本的值 id1.innerHTML='<strong>123</strong>' // 可以解析HTML文本标签
操作css
1 2 3 4 id1.style.color ='red' id1.style.fontSize ='20px' id1.style.padding ='2em'
删除节点
删除节点的步骤:先获取父节点,再通过父节点删除自己
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <div id ="father" > </div > <h1 > 标题1</h1 > <p id ="p1" > p1</p > <p class ="p2" > p2</p > </div > <script > var self = document .getElementById('p1' );var father = p1.parentElement; father.removeChild(self); father.removeChild(father.children[0]) father.removeChild(father.children[1]) father.removeChild(father.children[2])</script >
注意: 删除多个节点的时候,children是再时刻变化的,删除节点的时候一定要注意!
插入节点
我们获得了某个Dom节点,假设这个dom节点是空的,我们通过innerHTML就可以增加一个元素了,但是这个DOM节点已经存在元素了,我们就不能这么干了!会产生覆盖
追加
1 2 3 4 5 6 7 8 9 10 11 <p id ="js" > JavaScript</p > <div id ="list" > <p id ="se" > JavaSE</p > <p id ="ee" > JavaEE</p > <p id ="me" > JavaMe</p > </div > <script > var js = document .getElementById('js' ); var list = document .getElementById('list' ); </script >
效果:
创建一个新的标签,实现插入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <script > var js = document .getElementById('js' ); var list = document .getElementById('list' ); var newP = document .createElement('p' ); newP.id = 'newP' ; newP.innerText = 'hello.DragonPeng' ; var myScript = document .createElement('script' ); myScript.setAttribute('type' , 'text/javascript' ); var myStyle = document .createElement('style' ); myStyle.setAttribute('type' , 'text/css' ); myStyle.innerHTML = 'body{background-color: blue;}' ; document .getElementsByTagName('head' )[0 ].appendChild(myStyle); </script >
insert
1 2 3 4 5 var ee = document .getElementById('ee' );var js = document .getElementById('js' );var list = document .getElementById('list' ); list.insertBefore(js, ee);