博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DOM 文档对象模型+倒计时
阅读量:5281 次
发布时间:2019-06-14

本文共 3214 字,大约阅读时间需要 10 分钟。

DOM 文档对象模型

DOM (document object model) 文档对象模型,它定义了操作文档对象的接口。

DOM 把一份html文档表示为一棵家谱树,使用parent(父), child(子), sibling(兄弟)等记号

来表明家庭成员之间的关系。

通过可编程的对象模型,JavaScript 获得了足够的能力来创建动态的 HTML。

  • JavaScript 能够改变页面中的所有 HTML 元素
  • JavaScript 能够改变页面中的所有 HTML 属性
  • JavaScript 能够改变页面中的所有 CSS 样式
  • JavaScript 能够对页面中的所有事件做出反应

 

节点例子:

<p title="这里显示提示信息">这是一个段落</p>

 

二、获取文档对象

1. querySelector()

HTML5新加入的方法,通过传入合法的CSS选择器,即可获取符合条件的第一个元素

例:document.querySelector(“#test”); //返回id为test的首个div

2. querySelectorAll()
HTML5新加入的方法,通过传入合法的CSS选择器,即可获取所有符合条件的元素,返回对象数组

例:document.querySelectorAll(‘div.foo’);//返回所有带foo类样式的div元素对象

要注意:使用这上面两个方法无法查找带伪类状态的元素,比如querySelector(‘:hover’)不会得到

期结果。

3.getElementById()

这个方法返回一个与给定id属性值的元素节点相对应的对象。

例:document.getElementById(‘box’);

 

4.getElementsByTagName()

这个方法返回一个对象数组。每个对象分别对应着文档里给定标签的一个元素。

例:document.getElementsByTagName(‘li’);

 

5.getElementsByName()

通过 name 获取一个对象数组

 

二、间接引用节点(扩展)

除了可以直接引用节点,还可以通过节点间的关系来引用相对节点。

1.引用子节点

每个节点都有一个childNodes集合属性,类型是数组对象,表示该节点的所有子节点
的集合。这些子节点按照其在文档中出现的顺序排列,因此可以通过索引来依次访问各个子节
点。

例: document.childNodes[0]; //引用文档的根节点

document.childNodes[0].childNodes[0] //引用<head>节点
document.childNodes[0].childNodes[1] //引用<body>节点

除了使用childNodes属性,还有两个属性可以用于引用子节点,分别是:
element.firstChild;
element.lastChild;

它们分别表示第一个子结点和最后一个子结点。

 

2.引用父节点

html的节点层次是一个树状结构,除了根节点外,每个节点都仅有一个父节点
,可以由parentNode属性来引用

element.parentNode; //引用父节点

3.引用兄弟节点

属于同一个文档层次的节点称为兄弟节点,有两个属性可以用于兄弟节点间
引用,分别是:
element.nextSibling; //引用下一个兄弟节点

element.previousSibling; //引用上一个兄弟节点

 

 

三、获取节点信息(扩展)

在获得一个节点的引用后,有一些方法可以获得该节点的信息。

1.nodeName 获取节点名称

语法: Node.nodeName;

不同的类型的节点,nodeName的返回值有所差异:

元素节点:返回标记名称;

属性节点:返回属性名称;

文本节点:返回文本 #text

2.nodeType 获取节点类型

语法: Node.nodeType;

元素节点:返回 1

属性节点:返回 2

文本节点:返回 3

3.nodeValue 获取节点的值

语法: Node.nodeValue;

元素节点:返回null

属性节点:返回节点值

文本节点:返回文本内容 

 

四、处理属性节点

1. getAttribute 获取节点属性值

object.getAttribute(attribute)

例: var a = document.getElementsByTagName(‘a’);

for(var i=0; i<a.length; i++){
alert(a[i].getAttribute(‘title’));
}

2.setAttribute() 设置节点属性值

object.setAttribute(attribute, value)

例:var link = document.getElementById(‘link’);

link.setAttribute(‘title’, ‘链接提示信息’);

 

五、处理文本节点

1. node.innerHTML

获取该节点下的包含HTML标签的文本内容

例: var body = document.querySelector(‘body’);

alert(html.innerHTML);

2. node.textContent

获取该节点下的纯文本内容

例: var body = document.querySelector(‘body’);

alert(html.textContent);

 

六、因浏览器而异的空白节点(扩展)

ie浏览器和firefox浏览器对空白节点的处理不同,ie浏览器会忽略这些节点,而Firefox浏
览器则认可这些节点。

处理方法:

1.避免在文档中出现文本节点。
2.在使用前先删除其中的空白节点。
function cleanWhitespace(element){
for(var i=0; i < element.childNodes.length; i++){
var node = element.childNodes[i];
//判断是否是空白节点,如果是则删除该节点
if(node.nodeType == 3 && !/\S/.test(node.nodeValue){
node.parentNode.removeChild(node);
}
}

}

 

DOM 总结:

一份文档就是一棵树;

节点分为不同的类型,分别是:元素节点,属性节点,文本节点;

每个节点都是一个对象;

getElementById()方法将返回一个对象,该对象对应着文档里的一个元素节点;

getElementsByTagName()方法返回一个对象数组,它们分别对应着文档里的元素节点;

 

今天的一个作业:一个京东倒计时效果

效果图:

代码入下:

            

 

转载于:https://www.cnblogs.com/lzh739887959/p/5854984.html

你可能感兴趣的文章
工作中收集JSCRIPT代码之(下拉框篇)
查看>>
《转载》POI导出excel日期格式
查看>>
code异常处理
查看>>
git - 搭建最简单的git server
查看>>
会话控制
查看>>
推荐一款UI设计软件Balsamiq Mockups
查看>>
Linux crontab 命令格式与详细例子
查看>>
百度地图Api进阶教程-地图鼠标左右键操作实例和鼠标样式6.html
查看>>
游标使用
查看>>
LLBL Gen Pro 设计器使用指南
查看>>
SetCapture() & ReleaseCapture() 捕获窗口外的【松开左键事件】: WM_LBUTTONUP
查看>>
Android 设置界面的圆角选项
查看>>
百度地图api服务端根据经纬度得到地址
查看>>
根据xml生成相应的对象类
查看>>
Android StageFrightMediaScanner源码解析
查看>>
springBoot 项目 jar/war打包 并运行
查看>>
HDU 1501 Zipper
查看>>
打包java程序生成exe
查看>>
八叉树
查看>>
poj 1129 搜索
查看>>