前端BOM
BOM:浏览器对象模型
window
alert:弹出信息框
alert('String')
// 或者
Window.alert("String")
confirm:弹出确认框,确定或取消;返回结果赋值给一个变量
var a=window.confirm("确定离开?") // true or false
prompt:弹出输入框,用一个变量接受输入信息
var a=window.prompt("请输入:")
定时器:setTimeout或setInterval
setInterval // 多次定时器,间隔性执行 clearInterval // 清除多次定时器 setTimeout // 单次定时器,设置定时器后,定时器后面的操作继续执行 clearTimeout // 清除单次定时器 window.setTimeout(function(){ console.log('开始定时'); } ,1000) console.log('继续执行') // 无论定时器设置0还是1000毫秒,都先打印"继续执行" var num=0; var timer=null; timer=setInterval(function(){ num++; if(num>5){ clearInterval(timer); return; } console.log('num:'+num); }, 1000);
location
location.host location.hostname location.href // 若赋值一个新的url(location.href='www.baidu.com'),则进行跳转;若console.log(location.href),则打印当前url location.reload // 重新加载网页,可以和定时器结合使用 location.replace // location.replace('www.baidu.com'),跳转网页,不会产生历史记录,点击网页前进后退不会返回这个页面 location.pathname location.port location.protocol location.search function getQueryString(){ var qs = location.search.length>0 ? location.search.substring[1]:''; var items=qs.length ? qs.split('&'):[]; var item=null,name=null,value=null,args={}; for (var i=0; i<items.length;i++){ item=items[i].split('='); name=decodeURIComponent(item[0]); value=decodeURIComponent(item[1]); if(name.length){ args[name]=values; } } return args; } var args = getQueryString(); console.log(args.name); console.log(args.pwd) ;
navigator
用于检测浏览器上的插件
function hasPlugin(name){ name=name.toLowerCase(); for(var i=0;i<navigator.plugins.length;I++){ if(navigator.plugins[i].name.toLowerCase().indexOf(name)>-1) { return true; }else{ return false; } } alert(hasPlugin('flash')) }
history
网页的历史记录
var count=0; setTimeout(function(){ count++; histroy.go(0) // 0表示刷新,1表示网页前进按钮,-1表示网页后退按钮 }, 2000)
前端DOM
文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口。它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式。我们最为关心的是,DOM把网页和脚本以及其他的编程语言联系了起来。DOM属于浏览器,而不是JavaScript语言规范里的规定的核心内容。
查找元素
直接查找
document.getElementById // 根据ID获取一个标签 document.getElementsByName // 根据name属性获取标签集合 document.getElementsByClassName // 根据class属性获取标签集合 document.getElementsByTagName // 根据标签名获取标签集合
间接查找
parentNode // 父节点 childNodes // 所有子节点 firstChild // 第一个子节点 lastChild // 最后一个子节点 nextSibling // 下一个兄弟节点 previousSibling // 上一个兄弟节点 parentElement // 父节点标签元素 children // 所有子标签 firstElementChild // 第一个子标签元素 lastElementChild // 最后一个子标签元素 nextElementtSibling // 下一个兄弟标签元素 previousElementSibling // 上一个兄弟标签元素
操作
节点对象的三大属性
// 在DOM中。每一个节点都是一个对象;DOM节点有三大属性 nodeNname // 节点名称,只读 // 元素节点的nodeName与标签名相同 // 属性节点的nodeName与属性名称相同 // 文本节点的nodeName永远是#text // 注释节点的nodeName永远是#comments nodeValue // 节点的值 // 元素节点的nodeValue是undefined或null // 文本节点的nodeValue是文本自身 // 属性节点的nodeValue是属性的值 nodeType // 节点的类型 // 元素的nodeType为1 // 属性nodeType为2 // 文本的nodeType为3 // 注释的nodeType为8 // 文档的nodeType为9
操作内容
innerText 文本 outerText innerHTML HTML内容 innerHTML value 值
操作属性
attributes // 获取标签所有属性 setAttribute(key,value) // 设置标签属性 getAttribute(key) // 获取指定标签属性值
1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title></title> 6 </head> 7 <body> 8 <input type="button" value="全选" onclick="CheckAll();"/> 9 <input type="button" value="取消" onclick="CancelAll();"/> 10 <input type="button" value="反选" onclick="ReverseCheck();"/> 11 12 <table border="1" > 13 <thead> 14 15 </thead> 16 <tbody > 17 <tr> 18 <td><input type="checkbox" /></td> 19 <td>111</td> 20 <td>222</td> 21 </tr> 22 <tr> 23 <td><input type="checkbox" /></td> 24 <td>111</td> 25 <td>222</td> 26 </tr> 27 <tr> 28 <td><input type="checkbox" /></td> 29 <td>111</td> 30 <td>222</td> 31 </tr><tr> 32 <td><input type="checkbox" /></td> 33 <td>111</td> 34 <td>222</td></tr> 35 </tbody> 36 </table> 37 <script> 38 function CheckAll(ths){ 39 var tb = document.getElementById('tb'); 40 var trs = tb.childNodes; 41 for(var i =0; i<trs.length; i++){ 42 43 var current_tr = trs[i]; 44 console.log(current_tr.nodeType) 45 if(current_tr.nodeType==1){ 46 var inp = current_tr.firstElementChild.getElementsByTagName('input')[0]; 47 inp.checked = true; 48 } 49 } 50 } 51 52 function CancelAll(ths){ 53 var tb = document.getElementById('tb'); 54 var trs = tb.childNodes; 55 for(var i =0; i<trs.length; i++){ 56 57 var current_tr = trs[i]; 58 if(current_tr.nodeType==1){ 59 var inp = current_tr.firstElementChild.getElementsByTagName('input')[0]; 60 inp.checked = false; 61 } 62 } 63 } 64 65 function ReverseCheck(ths){ 66 var tb = document.getElementById('tb'); 67 var trs = tb.childNodes; 68 for(var i =0; i<trs.length; i++){ 69 var current_tr = trs[i]; 70 if(current_tr.nodeType==1){ 71 var inp = current_tr.firstElementChild.getElementsByTagName('input')[0]; 72 if(inp.checked){ 73 inp.checked = false; 74 }else{ 75 inp.checked = true; 76 } 77 } 78 } 79 } 80 81 </script> 82 </body> 83 </html> 84 85 Demo