BOM和DOM和ECMAscript的关系:
BOM是运行平台,BOM规则建立在ECMAscript的规则之上
DOM是运行在平台上的页面
ECMAscript是用来操作平台或运行在平台上的页面的工具
BOM:浏览器对象模型(Browers Object MOdel)
window是js中的顶层对象,所有的全局都属于window;window窗口:提供了浏览器的窗口之间的操作。
window对象的常见方法: alert(要显示的文本); 弹出信息框 prompt(提示对话框信息); 弹出输入框,点击确定,返回字符串,点击取消,返回null confirm(提示文字); 点击确定返回true,点击取消返回false open(url,name,feature,replace); open('http://www.baidu.com','_blank','width=300,height=300') //谷歌会默认把系统自动打开的新网页阻止掉,但不阻止通过事件打开的网页 close();关闭浏览器。 window对象下内置的子对象: history对象:该对象包含浏览器访问过的url。 该对象的属性: history.length;返回历史记录的数量 该对象的方法: history.back();后退,加载前一个url。 history.forward();前进,需要后退一下之后,才有前进的方向 history.go(num);参数为正,前进相应的数目,为负,后退相应的数目,为0,刷新 location对象:包含当前url的相关信息,而history对象不能具体反映url的相关信息。 该对象的属性: location.href;设置或返回完整的url location.search;返回url?后面的查询部分 location.hash;是一个可读写的字符串,是url的锚部分(从#开始的部分)哈希 该对象的方法: location.reload();刷新页面的方法,一般情况下,传递一个true,不使用缓存刷新。缓存? location.assign(url);加载新页面,当url为空字符时,加载当前页面 window.onload / onscroll/onresize 事件 onload当文档加载完成后执行一些操作1 window.onload = function(){ 2 console.log("页面加载完成") 3 }onscroll当页面发生滚动时执行一些操作
1 window.onload = function(){ 2 console.log(1) //当页面发生滚动时,打印1 3 }onresize当窗口大小发生改变时执行一些操作
1 window.onresize = function(){ 2 console.log(1) //当窗口大小发生改变时,打印1 3 }
DOM:文档对象模型(Document Object MOdel )
改变元素的内容(innerHTML),属性(value),样式(width,height,background) DOM中的选择器元素节点选择器:
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属性的基本操作:
元素的属性:内置、非内置
非内置属性需要通过一些节点的方法进行操作,注意:节点的方法,前缀一定是节点 getAttribute() :获取 元素的属性 setAttribute():设置/修改 元素的属性,低版本的IE不兼容;接收两个参数,属性名和属性值 removeAttribute():删除 元素的属性,低版本的IE不兼容 节点: 通过遍历所有子节点,将空白节点过滤掉,得出所有的元素节点; 文档节点:整个文档;ownerDocument:获取该节点的文档根节点,相当与 document 元素节点:每个HTML标签 文本节点:包含在HTML元素中的文本 属性节点:每一个HTML属性;attributes:获得所有属性节点,返回一个数组 注释节点:注释 节点类型(nodeType) 节点名字(nodeName) 节点值(nodeValue) 元素节点 1 标签名 null 文本节点 3 #text 文本 注释节点 8 #comment 注释的文字 文档节点 9 #document null 属性节点 2 属性名 属性值 DOM元素的基本操作 创建:createElement() 配合 appendChild() 将创建好的元素,插入到某个标签内的最后 删除:removeChild() 配合 parentNode; remove() 直接删除当前元素 document.body.removeChild(div); 样式: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:获取当前元素的包含块