文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
第十四课时
上节回顾:
- 1.BOM 浏览器对象模型
- a.
screen
指的不是浏览器的宽度,指的是整个电脑屏幕的分辨率- 可以拿到屏幕可用分辨率
- b.
navigator
- 可以通过
userAgent
判断当前浏览器信息
- 可以通过
- c.
location
URL
:统一资源定位符Union Resource Location
- 可以通过
href
属性重定向(改变)页面的 URL,进行页面跳转
- d.
history
go
方法能够让我们进行历史回退或者前进
- e.
frames
获得当前窗体的子页面(`iframe`)
- f.
document
DOM
模型的核心对象
- a.
- 所有的
DOM
对象都是在堆内存创建的 都是有一个构造器生成的 - 查看对象的构造器器方法:
- step1:查看标签的对象以及构造器
var body = document.body;console.log(body.toString())
- step2:查看对象是否是这个构造器创建出来的
console.log(body instanceof HTMLBodyElement)
- step1:查看标签的对象以及构造器
新知识点:
1.DOM 文档对象模型
document
- 功能
getElementById
:通过传入的 ID,返回标识了这个 ID 的唯一对象的内存地址getElementsByTagName
:通过传入的标签名字,返回所有该标签对象(HTMLCollection
)getElementsByClassName
:通过类的名字,返回所有该类的元素对象(HTMLCollection
)createElement
:想要创建出来的元素能够绘制在页面中,那么它必须在 DOM 树中- 总结
document
对象是 DOM 原型的核心对象,它是内存 DOM 树的根,所以它提供了很多功能让我们快速的找到 DOM 树中的某些 DOM 节点(对象)
- 总结
element
- 功能方法:(自定义属性非常灵活好用)
setAttribute/getAttribute
//getAttribute 获取标签的属性 –用来操作标签的属性setAttribute
设置标签的属性appendChild
:添加子元素
- 属性:
id
className
,style
name
,value
(只有表单元素有 其他是没有的)href
,src
…(对应的元素)innerHTML/innerText
innerText
返回文本信息children
://子元素集合parentNode
//父元素
- 总结:元素的功能属性直接可以通过元素对象
点
出来,除此意外的自定义属性
,请通过get/setAtribute
去操作
DOM 操作:
- 图片切换的相册效果
tab
切换效果- 表单验证
- 特效就是
DOM
操作的具体应用DOM
操作就是用js
来写HTML
代码 - 节点/元素/标签:
- 三种常用的节点类型:
- 元素节点
- 属性节点
- 文本节点
- 三种常用的节点类型:
操作 DOM 对象:
- 修改:–找到这个节点
- 删除:–找到这个节点
- 添加:–先造出一个节点 然后插入 插入到哪里?找节点来定位
- 这些都离不开节点的查找
节点的查找:(最重要)
- 1、
document.getElementById
—根据id
查找节点 [返回的是节点本身] - 2、
document.getElementsByTagName
–根据标签名字来查找[返回的是数组]document.getElementsByTagName[i]
- 3、
document.getElemenstByName
–根据name
属性来查找节点(一般用在表单中)[返回的是数组]document.getElemenstByName[i]
- 注意: 早期浏览器都认为
name
只出现在表单中 - 因此
document.getElemenstByName
只对表单中的元素发挥作用 后来部分浏览器把Name
属性扩展到一般的元素 如:div
但是 IE 浏览器还是只能对表单使用byName
因此处于兼容性 我们只能对表单使用byName
DOM
中查找节点的思路:(由大到小 个别情况 由子到父)
- 由大到小:(通过下面的来定位)
- 1、
document.getElementById
—根据 id 查找节点 [返回的是节点本身] - 2、
document.getElementsByTagName
–根据标签名字来查找[返回的是数组]document.getElementsByTagName[i]
- 3、
document.getElemenstByName
–根据name
属性来查找节点(一般用在表单中)[返回的是数组]document.getElemenstByName[i]
- 1、
- 如果还没有查到自己想要的节点,还可以继续根据上面已经找到的节点再次定位来查找
- 怎么继续定位?
- 答:
childNodes/child
- 答:
继续查找:
- 1、查找子元素
children[index]/childNodes
- 2、查找父元素
node.parentNode
–>获取父元素 - 3、查找兄弟元素
nextSibling
previousSibling
- 4、
nextSibling
previousSibling
firstChild
lastChild
这四个属性容易受到空白文本
的影响建议不用
//============给 Object 原型加一个方法 消除文本节点对 DOM 操作的影响 例如:nextSibling` `previousSibling` `firstChild` `lastChild (受到换行 和文本节点影响) |
- 5、对于查到的某个元素里面的子元素非常多 这时候还可利用
getElementsByTagname
进一步筛选 - 注意 对于元素对象和
document
对象相比 元素对象只能利用getElementsByTagName
函数 其他两个不能用
- 节点查找也是通过由大到小来定位:找到大的元素进一步细化 完全可以找到页面上任意一个元素控制他
- 子元素 不好找 就找他的父元素
- 要过滤空白文本节点,用
children
取他的文本节点
DOM 与节点的关系:
- node:
childNodes[]
parentNode
firstChild
getElementsByTagName('元素标签')
lastchild
nextSibling
previousSibling
children[index]
children
不是w3c
标准 但是各大浏览器兼容性很好
- 通过给原型添加方法在元素后面创建标签
- 启示 :在项目中,很多很多地方都需要一个方法但是系统没提供,这时可以通过原型扩展
//var p = document.createElement('p'); |
DOM 属性小结
Attributes
存储节点的属性列表(只读)childNodes
存储节点的子节点列表(只读)dataType
返回此节点的数据类型Definition
以DTD
或XML
模式给出的节点的定义(只读)Doctype
指定文档类型节点(只读)documentElement
返回文档的根元素(可读写)firstChild
返回当前节点的第一个子节点(只读)Implementation
返回XMLDOMImplementation
对象lastChild
返回当前节点最后一个子节点(只读)nextSibling
返回当前节点的下一个兄弟节点(只读)nodeName
返回节点的名字(只读)nodeType
返回节点的类型(只读)nodeTypedValue
存储节点值(可读写)nodeValue
返回节点的文本(可读写)ownerDocument
返回包含此节点的根文档(只读)parentNode
返回父节点(只读)Parsed
返回此节点及其子节点是否已经被解析(只读)Prefix
返回名称空间前缀(只读)preserveWhiteSpace
指定是否保留空白(可读写)previousSibling
返回此节点的前一个兄弟节点(只读)Text
返回此节点及其后代的文本内容(可读写)url
返回最近载入的 XML 文档的URL
(只读)Xml
返回节点及其后代的XML
表示(只读)
DOM 方法小结
cloneNode
返回当前节点的拷贝createAttribute
创建新的属性
- 节点操作
DOMDocument
属性和方法createCDATASection
创建包括给定数据的CDATA
段createComment
创建一个注释节点createDocumentFragment
创建DocumentFragment
对象createElement_x_x
创建一个元素节点createEntityReference
创建EntityReference
对象createNode
创建给定类型,名字和命名空间的节点createPorcessingInstruction
创建操作指令节点createTextNode
创建包括给定数据的文本节点getElementsByTagName
返回指定名字的元素集合hasChildNodes
返回当前节点是否有子节点insertBefore
在指定节点前插入子节点Load
导入指定位置的 XML 文档loadXML
导入指定字符串的 XML 文档removeChild
从子结点列表中删除指定的子节点replaceChild
从子节点列表中替换指定的子节点Save 把
XML`文件存到指定节点selectNodes
对节点进行指定的匹配,并返回匹配节点列表selectSingleNode
对节点进行指定的匹配,并返回第一个匹配节点transformNode
使用指定的样式表对节点及其后代进行转换transformNodeToObject
使用指定的样式表将节点及其后代转换为对象document.documentElement
返回文档的根节点document.activeElement
返回当前文档中被击活的标签节点event.fromElement
返回鼠标移出的源节点event.toElement
返回鼠标移入的源节点event.srcElement
返回激活事件的源节点node.parentNode,node.parentElement
返回父节点node.childNodes
返回子节点集合(包含文本节点及标签节点)node.children
返回子标签节点集合node.textNodes
返回子文本节点集合node.firstChild
返回第一个子节点node.lastChild
返回最后一个子节点node.nextSibling
返回同属下一个节点node.previousSibling
返回同属上一个节点node.a(oNode)
追加子节点:node.applyElment(oNode,sWhere)
sWhere
有两个值:outside
/ inside
应用标签节点node.insertBefore()
node.insertAdjacentElement()
node.replaceAdjacentText()
- 插入节点
node.remove()
node.removeChild()
node.removeNode()
- 删除节点
node.replaceChild()
node.replaceNode()
node.swapNode()
- 替换节点
node.cloneNode(bAll)
返回复制复制节点引用node.contains()
是否有子节点node.hasChildNodes()
是否有子节点
- 扩展阅读
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论