javascript学习笔记之DOM
DOM(文档对象模型),描述了一个层次化的节点树
一、DOM NODE相关公共属性与方法
DOM中所有节点都实现了NODE接口,该接口的公共属性和方法如下:
1.节点基本属性
1)NodeType 节点类型,利用12个数值来表示。常见的有:1代表元素节点,2代表属性节点,3代表文本节点,8代表注释节点,9代表document,11代表iframe
2) NodeName与NodeValue 这两个属性的值完全取决于特定的节点类型.例:如果是元素节点,那么nodeName的值为元素的标签名,nodeValue为null.
2.节点关系相关属性
I.childNodes属性,返回一个NodeList对象,这是一个有生命,会呼吸的对象,能够实时,动态的反映节点结构。具有length属性,也可以利用方括号或者item()访问其中的节点。
II,parentNode属性,previousSibling属性,nextSibling属性,firstChild属性,lastChild属性。
IV,ownerDocument属性,该属性指向整个文档的文档节点Document.
如果想要的知识元素节点,那么对应的属性如下:
childNodes children
firstChild firstElementChild
lastChild lastElementChild
previousSibling previousElementSibling
nextSibling nextElementSibling
childNodes.length childElementCount
3.操作节点相关方法
hasChildNodes()方法
1)appendChild() 父节点调用,返回新增的节点;如果新增的节点已经是文档的一部分了,那么实现效果实际上是节点的移动,结果就是该节点从原来位置转移到新位置。
2)insertBefore() 父节点调用,接收两个参数。要插入的节点和作为参照的节点。
3)replaceChild() 父节点调用,接收两个参数,要插入的节点和要替换的节点。
4)removeChild() 父节点调用
5)cloneNode() 复制节点,如果要深复制,传入参数true,注意该节点不会复制节点的javascript属性,如事件处理程序等。
6)normalize(),其 作用在于处理文档树中相邻的文本节点
4,查找节点的相关方法
1)document.getElementById() 返回元素,
2)[document|parentNode].getElementsByTagsName() 返回NodeList,其他同上
3)document.getElementsByName() 查找单选按钮等的时候很有用
4)DOM扩展:document.querySelector();参数为css选择符,返回查找到的第一个元素
5)DOM扩展:document.querySelectorAll();参数为css选择符,返回查找到的所有元素
5,补充
虽然DOM为操作节点提供了丰富的方法,但是在需要给文档插入大量新html标记的情况下,通过DOM仍然非常麻烦,因为不仅要创建一系列的DOM节点,还要小心地按照正确的顺序插入,同时性能也不高。因此DOM扩展中定义了一下属性:
1.innerHTML属性 在读模式下,innerHTML返回与调用元素的所有子节点对应的html标记。在写模式下,innerHTML会根据制定的值创建新的DOM树,然后用这个DOM树替换掉原来元素的所有子节点。
2)outerHTML属性 在读模式下,outerHTML返回与调用元素的所有子节点对应的html标记。在写模式下,outerHTML会根据制定的值创建新的DOM树,然后用这个DOM树完全替换掉原来元素。
注意的是,为了提高内存和性能,在使用innerHTML,outterHTML属性时候,最好手工删除要被替换元素的所有事件处理程序和JavaScript对象属性。
二、document节点类型
其nodeType为9,nodeName为document,nodeValue为null
1.特有属性
1)document.docType属性,指向DocumentType子节点
2)document.documentElement属性,指向html元素
3)document.body属性,指向body元素
4)document.title属性,指向文档标题
5)document.url/domain/referer属性,url包含页面完整URL,domain包含页面域名,referer保存者链接到当前页面的前一个页面的链接(这些特性其实都存在于html头部中)
6)document.forms 可以获得页面所有的form元素
7)document.images 可以获得页面所有的images元素
8)document.anchors 可以获得页面所有带有name属性的<a>元素
9)document.links 可以获得页面所有带有href属性的<a>元素
10)document.compatMode='CSS1Compat' 标准模式下,'BackCompat' 混杂模式。这与meta中的定义有关。
2,特有方法
2)write(),writeln()用于页面的输出流;
3)open(),close()用于打开和关闭输出流,如果是在页面加载期间使用write(),writeln(),则不需要用到上述两个方法
4)createElement()方法 创建element类型的节点
5)createTextNode()方法,创建Text类型的节点,接受一个参数,(用得不多,完全可以使用innerHTML搞定)
6)createAttributeNode()方法,创建特性节点(用得不多,完全可以使用setAttribute/getAttribute搞定)
三、Elemment类型
nodeType值为1,nodeName为标签名,nodeValue为null
1,特有属性
1)tagName属性 和 nodeName的返回值相同
2)id属性
3)title属性
4)className属性
5)attributes 除非要遍历元素的所有attribute,否则这个属性用的不多
6)style属性,如style.backGround 等,注意的是,这只能获取html代码中内嵌的样式,对于<style>标签中设置的样式,以及外联样式表中的样式,是没有办法获取的。
2,特有方法
1)getAttribute(),setAttribute()和removeAttribute()
四、Text类型
NodeType为3,NodeName为#text,nodeValue为节点所包含的文本,
1)data属性,和nodeValue的返回值相同。可以通过appendData(),deleteData(),insertData(offset,text),replaceData(offset,count,text),substringData(offset,count)等方法进行操作
2)length属性,返回文本中字符数目
3)要访问Element元素中的文本,利用
div.firstChild.data来访问。或者div.childNodes[0].nodeValue来访问。不过很多情况下都使用父节点的innerHTML属性
四、documentFragment类型
NodeType为11,NodeName为#document-fragment,nodeValue为null
documentFragment可以作为一个仓库使用,防止频繁的利用javascript进行dom操作,来提高性能。
var fragment=document.createDocumentFragment();
var ul=document.getElementById('list');
var li=null;
for(var i=;i<;i++){
li=document.createElement('li');
li.innerHTML='item'+i;
fragment.appendChild(li);
}
ul.appenChild(fragment);
五、操作表格
除了使用innerHTML之外,操作表格还有一些相对简单的API,如下:
var table=document.createElement('table');
var tbody=document.createElement('tbody');
tabel.appendChild(tbody);
tbody.insertRow();
tbody.rows[].insertCell();
tbody.rows[].cells[].innerHTML='cell1';
六:元素滚动
元素节点都可以调用的关于滚动的方法有:
scrollIntoViewIfNeeded(alignCenter):当前元素在视口不可见的时候,滚动浏览器窗口或者容器元素,让它可见。如果已经可见,那么什么都不做。alignCenter若为true,则尽量让元素显示在视口中央。
scrollByLines(lineCount):将元素内容滚动指定的行高
scrollByPages(pageCount):将元素滚动指定的页面高度
javascript学习笔记之DOM的更多相关文章
- javascript学习笔记之DOM与表单
DOM(文档对象模型),猫叔了一个层次化的节点树 一.DOM NODE相关公共属性与方法 DOM中所有节点都实现了NODE接口,该接口的公共属性和方法如下: 1.节点基本属性 1)NodeType 节 ...
- JavaScript 学习笔记-HTML&&DOM
HTML DOM (文档对象模型) 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). HTML DOM 模型被构造为对象的树. JavaScript 能够 ...
- JavaScript学习笔记之DOM介绍
目录 1.简介 2.方法 3.属性 4.访问节点 5.修改节点 6.添加节点 7.删除节点 8.替换节点 9.改变 CSS 1.简介 文档对象模型(Document Object Model,DOM) ...
- JavaScript学习笔记之DOM对象
目录 1.Document 2.Element 3.Attribute 4.Event 1.Document 每个载入浏览器的 HTML 文档都会成为 Document 对象,Document 对象允 ...
- Javascript学习笔记三——操作DOM(二)
Javascript学习笔记 在我的上一个博客讲了对于DOM的基本操作内容,这篇继续巩固一下对于DOM的更新,插入和删除的操作. 对于HTML解析的DOM树来说,我们肯定会时不时对其进行一些更改,在原 ...
- Javascript学习笔记二——操作DOM
Javascript学习笔记 DOM操作: 一.GetElementById() ID在HTML是唯一的,getElementById()可以定位唯一的一个DOM节点 二.querySelector( ...
- Java程序猿的JavaScript学习笔记(8——jQuery选择器)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿JavaScript学习笔记(2——复制和继承财产)
计划和完成在这个例子中,音符的以下序列: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaSc ...
- Java程序猿的JavaScript学习笔记(12——jQuery-扩展选择器)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
随机推荐
- spark教程(三)-RDD认知与创建
RDD 介绍 spark 最重要的一个概念叫 RDD,Resilient Distributed Dataset,弹性分布式数据集,它是 spark 的最基本的数据(也是计算)抽象. 代码中是一个抽象 ...
- L2-013. 红色警报(并查集+无向图联通分量)
战争中保持各个城市间的连通性非常重要.本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报.注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不 ...
- springboot页面模板thymeleaf的简单用法
thymeleaf基础语法: 变量输出与字符串操作: th:text 表示在页面输出值 th:value 表示将一个值放入input标签的value中 判断字符串是否为空: thymele ...
- springboot(十九)-线程池的使用
我们常用ThreadPoolExecutor提供的线程池服务,springboot框架提供了@Async注解,帮助我们更方便的将业务逻辑提交到线程池中异步执行. 话不多说,编码开始: 1.创建spri ...
- 15 Scrapy框架之CrawlSpider
一.简介 CrawlSpider其实是Spider的一个子类,除了继承到Spider的特性和功能外,还派生除了其自己独有的更加强大的特性和功能.其中最显著的功能就是”LinkExtractors链接提 ...
- iview之tabs嵌套
iview之tabs嵌套 说明: iview组件中当嵌套使用 Tabs时,需要在Tabs中指定 name 属性来区分层级,然后在TabPane 中设置 tab 属性指向对应 Tabs 的 name 字 ...
- RAD Studio 10 up1欢迎页证书不可用
不只是欢迎页,每打开一个新的工程,都会出现上面那个证书不可用的提示. 解决方法: 1.通过Fiddler网络监控软件分析发现,出现这个问题的原因是bds启动的时候会用https协议访问谷歌的统计服务器 ...
- hashmap的hash方法源doc解读
/** * Computes key.hashCode() and spreads (XORs) higher bits of hash * to lower. Because the table u ...
- 数据库 (二):MySQL密码策略与用户管理
为了加强安全性,MySQL5.7为root用户随机生成了一个密码可通过# grep "password" /var/log/mysqld.log 命令获取MySQL的临时密码用该密 ...
- java8学习之Stream源码分析
上一次已经将Collectors类中的各种系统收集器的源代码进行了完整的学习,而在之前咱们已经花了大量的篇幅对其Stream进行了详细的示例学习,如: 那接下来则通过源代码的角度来对Stream的运作 ...