BOM和DOM和ECMAscript的关系:
BOM是运行平台,BOM规则建立在ECMAscript的规则之上
DOM是运行在平台上的页面
ECMAscript是用来操作平台或运行在平台上的页面的工具
BOM:浏览器对象模型(Browers Object MOdel)
window是js中的顶层对象,所有的全局都属于window;window窗口:提供了浏览器的窗口之间的操作。
1 window.onload = function(){ 2 console.log("页面加载完成") 3 }
1 window.onload = function(){ 2 console.log(1) //当页面发生滚动时,打印1 3 }
1 window.onresize = function(){ 2 console.log(1) //当窗口大小发生改变时,打印1 3 }
DOM:文档对象模型(Document Object MOdel )
元素节点选择器:
id:返回的是单个对象;document.getElementById( )
class:返回的是数组对象,如果要使用其中的元素,通过索引解析;document.getElementsByClassName( )
tagname:返回的是数组对象,如果要使用其中的元素,通过索引解析;document.getElementsByTagName( )
name:返回的是数组对象,如果要使用其中的元素,通过索引解析;document.getElementsByName( )
querySelector:返回的是单个对象;document.querySelector( )
querySelectorAll:返回的是数组对象,如果要使用其中的元素,通过索引解析;document.querySelectorAll( )
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8" /> 5 <meta name="viewport" content="width=device-width, initial-scale=1"> 6 <title>选择器</title> 7 </head> 8 <body> 9 <div id="box">1</div> 10 <div id="box">2</div> 11 <div id="box">3</div> 12 <div class="msg"> 13 <div class="sbox"> 14 <h2>标题3</h2> 15 <h2>标题4</h2> 16 </div> 17 <h2>标题1</h2> 18 <h2>标题2</h2> 19 20 </div> 21 <div class="cont">4</div> 22 <div class="cont">5</div> 23 <div class="cont">6</div> 24 <span>7</span> 25 <span>8</span> 26 <span>9</span> 27 <input type="text" name="user"> 28 <input type="text" name="user"> 29 <input type="text" name="pass"> 30 </body> 31 <script> 32 //id 33 var box = document.getElementById("box"); 34 console.log(box); 35 //class 36 var acont = document.getElementsByClassName("cont"); 37 console.log(acont); 38 console.log(acont[0]); 39 console.log(acont[0].innerHTML); 40 console.log(acont.innerHTML); 41 //tagName 42 var aspan = document.getElementsByTagName("span"); 43 console.log(aspan); 44 console.log(aspan[0]); 45 //name 46 var auser = document.getElementsByName("user"); 47 console.log(auser); 48 //querySelector 49 var ele = document.querySelector("#box"); 50 var ele = document.querySelector(".cont"); 51 var ele = document.querySelector("span"); 52 var ele =document.querySelector(".msg h2"); 53 var ele =document.querySelector(".msg>h2") 54 console.log(ele); 55 //querySelectorAll 56 var ele = document.querySelectorAll("#box"); 57 var ele = document.querySelectorAll(".cont"); 58 var ele = document.querySelectorAll("span"); 59 var ele = document.querySelectorAll(".msg h2"); 60 var ele = document.querySelectorAll(".msg>h2"); 61 console.log(ele); 62 // 父选子:获得子元素节点的集合,不包含空白节点 63 var omsg = document.querySelector(".msg"); 64 console.log(omsg.children); 65 // 子选父:获得父元素节点 66 var osbox = document.querySelector(".sbox"); 67 console.log(osbox.parentNode); 68 // 第一个子 69 var omsg = document.querySelector(".msg"); 70 console.log(omsg.firstElementChild) 71 // 最后一个子 72 var omsg = document.querySelector(".msg"); 73 console.log(omsg.lastElementChild) 74 // 上一个兄弟 75 var omsg = document.querySelector(".msg"); 76 console.log(omsg.previousElementSibling) 77 // 下一个兄弟 78 var omsg = document.querySelector(".msg"); 79 console.log(omsg.nextElementSibling) 80 </script> 81 </html>
其他节点选择器:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 7 <title>Document</title> 8 </head> 9 <body> 10 <span>qwe</span> 11 <div class="box"><span>1</span> 12 <p>2</p> 13 hello 14 <!-- 这是注释 --> 15 <em>3</em> 16 </div> 17 <span>zxc</span> 18 </body> 19 <script> 20 // 其他节点选择器: 21 // 关系: 22 // 父选子:获得所有子节点的集合,包括空白节点 23 // var obox = document.querySelector(".box") 24 // console.log(obox.childNodes) 25 // 上一个兄弟: 26 // var obox = document.querySelector(".box") 27 // console.log(obox.previousSibling) 28 // 下一个兄弟: 29 // var obox = document.querySelector(".box") 30 // console.log(obox.nextSibling) 31 // 第一个子: 32 // var obox = document.querySelector(".box") 33 // console.log(obox.firstChild) 34 // 最后一个子: 35 var obox = document.querySelector(".box") 36 console.log(obox.lastChild) 37 </script> 38 </html>
DOM属性的基本操作:
元素的属性:内置、非内置
1 获取非行内样式(兼容问题) 2 function getStyle(obj,attr){ //获取非行间样式,obj是对象,attr是值 3 if(obj.currentStyle){ //针对ie获取非行间样式 4 return obj.currentStyle[attr]; 5 }else{ 6 return getComputedStyle(obj,false)[attr]; //针对非ie 7 }; 8 };
尺寸类样式:
clientWidth/clientHeight:可视内容区域的宽高
scrollWidth/scrollHeight:包括滚动区域的宽高
offsetWidth/offsetHeight:可视边框区域的宽高
offsetLeft/offsetTop:元素相对于包含块偏移的位置
scrollLeft/scrollTop:滚动的left和top
offsetParent:获取当前元素的包含块