- A+
BOM
是指浏览器对象模型,可以让JavaScript跟浏览器对话
Window对象
window对象是客户端JavaScript最高层对象之一,同时也是其他大部分对象的共同祖先,在调用widow对象的方法和属性时,可以省略window对象引用。比如:window.document.write()可以直接写document.write()
- window.innerHeight 浏览器窗口内部高度
- window.innerwidth 浏览器窗口内部宽度
- window.open() 打开新窗口
- window.close() 关闭当前窗口
Window的子对象
navigator对象(浏览器对象)
- navigator.appName web浏览器全称
- navigator.appVersion web浏览器厂商和版本的详细字符串
- navigator.userAgent 客户端绝大部分信息
- navigator.platform 浏览器运行所在的操作系统
screen对象(屏幕对象)
- screen.availWidth 可用的屏幕宽度
- screen.availHeight 可用的屏幕高度
history对象(历史对象)
- history.forward() 前进一页
- history.back() 后进一页
location对象
- location.href 获取url
- location.href="url" 跳转到指定url页面
- location.reload() 重新加载页面
弹出框
JavaScript中有三种消息框:警告框、确认框、提示框
- alert("警告内容"); 警告框
- confirm(”确认内容"); 确认框,用户点击时,会返回true(确定)和false(取消)
- prompt("提示内容"); 提示框,用户确认时,会返回你在提示框输入的内容,取消则返回null。
计时事件
指在一定时间间隔之后再执行代码,而不是函数被调用后立即执行。
setTimeout()方法:
var t= setTimeout("js语句",时间(毫秒为单位)); //语法 /* 第一参数,是含有js语句的字符串 第二个参数,是指多少毫秒后执行第一个参数 注意:js语句括号内要用单引号 setTimeout()方法会返回一个值 */
clearTimeout()方法
clearTimeout(setTimeout方法返回的值);//语法 //例子 var t=setTimeout(function(){alert(123)},3000) clearTimeout(t); //取消setTimeout的设置
setInterval()方法
按照指定的周期(毫秒为单位)不断调用函数或者表达式,直到clearInterval()被调用或窗口被关闭。
//语法 setInterval("js语句",时间间隔); //例子 var t=setIntervar("alert(3)",3000) clearInterval(t);
DOM
指文档对象模型,该模型可以访问HTML文档中所有元素
HTML DOM树
- 文档节点(document对象):代表整个文档
- 元素节点(element对象):代表一个元素(标签)
- 文本节点(text对象):代表元素(标签)中的文本
- 属性节点(attribute对象):代表一个属性,元素(标签)才有属性
- 注释是注释节点(comment对象)
注意:js可以通过DOM修改页面中的元素、属性、css样式以及对页面事件作出回应。
查找标签
直接查找
document.getElementById //根据ID获取一个标签 document.getElementsByCalssName //根据class属性获取标签集合 document.getElementsByTagName //根据标签签名获取标签集合
间接查找
根据直接查找获取一个标签后,通过调用其他方法,来找的跟这个标签有关联的其他标签
间接查找的六个方法:
1、parentElement //获取父节点标签
2、children //获取所有字标签
3、firstElementChild //获取第一个子标签
4、lastElementChild //获取最后一个子标签
5、nextElementSibling //获取下一个兄弟标签元素
6、previousElementSibling //获取上一个兄弟标签元素。
//例子:
let e=document.getElementById('d1'); > undefined e.parentElement //获取父节点标签 > <div class="right">…</div> e.children //获取所有字标签 > HTMLCollection(3) [div.title, div.body, div.bottom]0: div.title1: div.body2: div.bottomlength: 3__proto__: HTMLCollection e.children[2] > <div class="bottom">…</div> e.firstElementChild //获取第一个子标签 > <div class="title">…</div> e.lastElementChild //获取最后一个子标签 > <div class="bottom">…</div> e.nextElementSibling //获取下一个兄弟标签元素 > <div class="article">…</div><div class="title">…</div><div class="body">…</div><div class="bottom">…</div></div> e.previousElementSibling //获取上一个兄弟标签元素。 > null
节点操作
/* 案例一: 新建立一个img标签 为该标签设置属性 最后将该便签设置在id1的标签下 */ var imgEle=document.createElement("img"); //创建新的标签img imgEle.src='广州.jpg'; //给img标签设置src属性 "广州.jpg" imgEle.setAttribute('title','广州'); //该设置方法可以设置自定义属性,也可以设置默认属性 undefined let divEle=document.getElementById('d1'); undefined divEle.appendChild(imgEle); //在标签内部增加img标签
/* 案例二 创建一个a标签 为a标签添加文本内容 将a标签插入在id=d2的标签前面 */ var aEle=document.createElement('a'); aEle.href='www.baidu.com' "www.baidu.com" aEle.innerText="点击我" //为a标签添加文本 "点击我" aEle <a href="www.baidu.com">点击我</a> let d1Ele=document.getElementById('d1') let d2Ele=document.getElementById('d2') d1Ele.insertBefore(aEle,d2Ele) //在d2标签前插入a标签 <a href="www.baidu.com">点击我</a>
appendChild() 添加子节点
removeChild() 删除子节点
replaceChild() 替换子节点
setAttribute('属性','属性值') 设置属性
getAttribute(‘属性’) 获取属性
removeAttribute(‘属性’) 移除属性
//innerText跟innerHTML的区别: let d3=document.getElementById('d3') undefined d3.innerText //获取该标签下的所有文本内容 "div-p div-span" d3.innerHTML //获取标签下的所有文本和标签内容 " <p>div-p</p> <span>div-span</span> " d3.innerText='<h1>hello world</h1>' //不识别html标签 "<h1>hello world</h1>" d3.innerHTML='<h1>hello world</h1>' //识别html标签 "<
获取值的操作
语法:标签对象.value. 适用input、select、textarea标签
class操作
- classList.remove(类名) 删除指定类
- classList.add(类名) 添加类
- classList.contains(类名) 存在返回true,不存在返回false
- classList.toggle(类名) 存在就删除,不存在就添加
var pEle=document.getElementById('p1') pEle.className "c1 c2 c3" pEle.classList DOMTokenList(3) ["c1", "c2", "c3", value: "c1 c2 c3"] pEle.classList.remove('c3') pEle.classList.add('c3') pEle.classList.contains('c2') true pEle.classList.contains('c4') false pEle.classList.toggle('c3') false pEle.classList.toggle('c3') true
指定css操作
1、没有中横线的css属性,一般直接使用style.属性名即可,(color,border)
如:obj.style.margin、obj.style.color等
2、有中横线的css属性(background-color),将中横线后面第一个字母换成大写即可
如:obj.style.backgroundColor
var pEle=document.getElementById('p1') pEle.style.border='3px solid yellow' "3px solid yellow" pEle.style.backgroundColor='grey' "grey"
事件:
事件绑定方式:
<button onclick='func1()'>点击</button> <button id='d1'>点我</button> <script> //第一种绑定方式 function func1(){ alert(111) } //第二种 let btnEle=document.getElementById('d1'); btnEle.onclick=function(){ alert(222) } </script>
注意:script代码一般放在body最下面
window.onload
window.onload事件是在文件加载结束才触发的。
注意:onload()函数存在覆盖现象
<script> //第一种绑定方式 window.onload=function(){ alert(111) } //第二种 let btnEle=document.getElementById('d3'); benEle.onclick=function(){ alert(222) } </script>