DOM(Document Object Model)(文档对象模型)
定义了用于访问文档的标准, 允许程序和脚本动态访问和更新文档的内容、结构和样式。BOM(borwser Object Model)(浏览器对象模型)
使用对象描述了浏览器的各个部分的内容。DOM
描述了处理网页内容的方法和接口,BOM
描述了与浏览器进行交互的方法和接口。
BOM(Browser Object Model) 浏览器对象模型
window对象 窗口本身 BOM模型中的顶层对象
1 | // window尺寸兼容获取方法 (不包括工具栏和滚动条) |
Navigator对象
①window.navigator.userAgent
获取操作系统的版本,浏览器版本/类型的信息
②window.navigator.appName
返回浏览器的名称
③window.navigator.cookieEnabled
返回指明浏览器中是否启用cookie的布尔值
④window.navigator.paltform
获取用户所使用的操作系统
History对象
①window.history.length
返回浏览器历史列表中的url数量
②window.history.back()
加载 history
列表中的前一个 URL
③window.history.forward()
加载 history
列表中的下一个 URL
④window.history.go(-num)
加载 history
列表中的某个具体页面
location对象
①window.location
返回当前文档的URL
②window.location.href="http://www.baidu.com"
跳转页面
②window.location.assign('http://www.baidu.com')
跳转页面
③window.loaction.reload()
刷新当前页面
④window.loaction.search
返回地址栏中?后面的参数
⑤window.location.hash
返回地址栏中的hash值
screen对象
①window.screen.width
返回显示器的宽度
②window.screen.height
返回显示器的高度
③window.screen.availHeight/availWidth
有效宽度或高度去除任务栏
document对象
包含了页面中的可见内容,由html标签对象节点构成对象树树根就是document
1.可视区尺寸document.documentElement.clientWidth
document.documentElement.clientHeight
2.滚动距离document.documentElement.scrollTop||docuemnt.body.scrollTop
3.文档高度document.documentElement.offsetHeight
document.body.offsetHeight (IE)
DOM (Document Object Model) 文档对象模型 整个页面结构
DOM对象属性
1.document.cookie
设置或返回与当前文档有关的所有cookie
2.document.title
当前文档的标题
3.document.URL
当前文档(页面)的完整URL(地址栏显示的URL)
4.document.domain
获取域名
5.document.referrer
连接到当前页面的那个页面的URL
6.document.documentElement
获取html对象
7.document.body
获取body对象
8.document.body.innerHTML
获取body内容1
2
3
4
5
6ex:var t = document.title // 获取title
console.log(t) //字符串的练习
document.title = '字符串' // 设置title
console.log(document.title) //字符串
var u = document.URL
console.log(u) //file:///C:/Users/Administrator/Desktop/1.html
获取DOM对象的方法
document.getElementById('test1')
按ID找 返回值是单个对象 多个相同ID时只返回第一个document.getElementsByTagName('p')[0]
必须加方括号下标明确那一个对象document.getElementsByTagName('p')[1].style.background="green"
按标签找 返回值是对象的集合(数组) 即使只找到一个也包装成对象的集合document.getElementsByTagName()
动态方法 可以动态获取元素,获取动态的NodeLists,改变dom结构会影响Nodelistsdocument.querySelectorAll()
返回所有匹配到的元素NodeList集合,没匹配到返回空的NodeList
静态方法 获取静态的Nodelist,改变相关的node不会改变静态的nodelist,这个对象必须在获取的时候被创建出来在动态NodeList里return的是一个指针,而静态的NodeList返回时当前的node所有信息。
document.querySelector(CSS选择符)
返回匹配到的第一个元素,没匹配到返回nulldocument.getElementsByName('username')[0]
对于表单元素 可以用name来找返回值是对象的集合(数组)注:获取表单中输入的数据 document.表单名.表单元素名.value
document.getElementsByClassName('test2')[0]
//IE9以下不兼容
按类名查找 对象的集合(数组)
1 | /*<body> |
操作对象的属性
1 | <img src="" alt="" title="" style="width:200px;height:200px;" /> |
设置样式
对象.style.width = '100px'
对象.style.cssText = 'width:100px;height:100px'
只会修改行内的样式 后写的覆盖前面的
获取样式
1 | // 行间样式的获取 CSS属性的访问 |
DOM节点相关操作
- 节点信息
1 | a.nodeName // 节点名称 obj.nodeName |
- 查找节点
1 | a.子节点 |
- 节点相关操作
1 | A. 创建节点 |
innerHTML
与innerText
1 | obj.innerHTML="<li>春</li><li>夏</li><li>秋</li>"; //改变标签里的内容 |
动态添加脚本文件
1
2
3
4
5
6
7
8
9
10function loadScript (url, cb) {
var script = document.createElement('script')
script.type = 'text/javascript'
script.onload = function () {
cb && cb()
}
script.src = url
document.body.appendChild(script)
}
loadScript('test.js')动态添加样式文件
1
2
3
4
5
6
7
8
9
10
11
12function loadStyle (url, cb) {
var link = document.createElement('link')
link.rel = 'stylesheet'
link.type = 'text/css'
link.onload = function () {
cb && cb()
}
link.href = url
var head = document.head || document.getElementsByTagName('head')[0]
head.appendChild(link)
}
loadStyle('common.css')
JS 表格和表单的操作
表单的操作
1.selectedIndex
可设置或返回下拉列表中被选择选项的索引号,若多选则返回第一个被选择的索引号obj.options[obj.selectIndex].value
获取选中下拉列表选项的值
2.focus()
获取焦点select()
选中
3.复选框和单选按钮的onclick事件可以通过checked判断是否被选中
下拉列表一般用onchange事件遍历所有项通过selected判断是否选中
注. IE6,IE7,IE8 不支持input类型修改,会报错
4.document.forms
获取页面中所有的表单表格的操作
1 | tab.tHead //获取表格头部thead |
DOM扩展
document.activeElement HTML5新增辅助管理DOM焦点的功能
1
2
3
4
5
6
7
8
9// document.activeElement // 会始终引用DOM中当前获得了焦点的元素
// 获得焦点的方式:页面加载、用户输入(Tab)、调用focus()
// 文档刚刚加载完成时,document.activeElement中保存的是document.body元素的引用 加载期间值为null
console.log(document.activeElement) // <body>...</body> 加载完成默认是body
var btn = document.getElementById('btn')
btn.focus()
console.log(document.activeElement === btn) // true
// doucment.hasFocus() // 确认文档是否获得了焦点
console.log(doucment.hasFocus) // 文档是否获取了焦点 可判断用户是否正在与页面交互classList HTML5新增的操作类名的方式
1
2
3
4obj.classList.add('demo') // add 添加指定的类名 如果已存在就不在添加
obj.classList.contains('demo') // contains 是否包含给定类名 存在返回true 否则返回false
obj.classList.remove('demo') // remove 删除给定的类名
obj.classList.toggle('demo') // toggle 如果已存在给定类名则删除它,如果不存在给定的值则添加给定类名data-xxx HTML5新增自定义数据属性
1
2
3// 在标签上添加 data-开头自定义属性 可以通过 元素.dataset.属性获取
// <div id="mydiv" data-appid = '123' data-name='tew'>
console.log(mydiv.dataset.appid + '-' + mydiv.dataset.name) // 123-tewele.scrollIntoView()
1
2
3// 滚动浏览器窗口或某个容器元素,使调用元素或获得焦点元素出现在视口中
// scrollIntoView(true)或scrollIntoView() // 滚动之后会让调用元素顶部与视口顶部尽可能平齐
// scrollIntoView(false) // 滚动之后会让调用元素尽可能全部出现在视口中 调用元素底部与视口顶部平齐ele.scrollIntoViewIfNeeded()
1
2
3
4// 将不在视口可见区域的元素滚动到视口可见区域,如果已在视口可见区域则不滚动
// ele.scrollIntoViewIfNeeded() 同 ele.scrollIntoViewIfNeeded(true)
// 元素将在其所在滚动区的可视区域中居中对齐
// ele.scrollIntoViewIfNeeded(false) // 元素将与可视区域最近的边缘对齐contentDocument
框架内容文档对象1
2
3
4// <iframe id='myIframe'>
var iframe = document.getElementById('myIframe')
var iframeDoc = iframe.conetenDocument || iframe.contentWindow.document
// iframe.contentWindow.document 兼容IE8
try-catch 错误处理
1 | // 把有可能抛出错误的代码都放在try语句块中,而把那些用于错误处理的代码放在catch语句块中 |
scrollTop
滚动高度 被隐藏在内容区域上方的像素值兼容写法 var scrollTop = document.body.scroolTop || document.documentElement.scrollTop
offsetParent
最近有定位属性的祖先节点 如果祖先没有定位则你认为bodyoffsetLeft/offsetTop
外边框到有定位父级的内边框的距离obj.getBoundingClientRect()
获取元素的信息(返回对象)包括 height width bottom top right left 获取的值会随滚动条变化
window.onerro
捕获即时运行错误 任何没有通过try-catch处理的错误都会触发performance.getEntries()
获取所有加载成功的资源列表document.images
获取页面中所有的images