DOM核心API及其相关重要概念的理解

是什么?

  是各大浏览器提供的针对HTML和XML文档的一个API(Application Programming Interface应用程序编程接口)。DOM描述了一个层次化的节点树,容许开发人员对DOM中的节点进行增删改查,操作节点的属性和样式。

节点

  HTML中的每个成分都是一个节点(元素,属性,文本,注释,文档)。下图是犀牛书中对DOM结构的解析,迷茫了回头看图。

节点类型

  通过节点的nodeType属性访问该节点的类型,五种不同的返回值分别代表5中类型的节点。

  元素(element): 1

  属性(attribute):2

  文本(text):3

  注释(annotation):8

  文档(document):9(一个页面只有一个document对象)

<!-- 这是注释节点
      元素节点:整个div
      属性节点:有两个,id属性hero 和自定义属性 data-imgSrc="xxx"
      文本节点:哈哈没想到吧,我又回来啦!
-->
<div id="hero" data-imgSrc="xxx">哈哈没想到吧,我又回来啦!</div>

节点名称

  通过nodeName访问节点名称。

  元素节点:是大写的标签名称。

  文本节点:永远是#text

  注释节点:永远是#comment

节点值

  通过nodeValue访问节点值,元素节点nodeValue属性不可用。

  文本节点:其中的文本

  注释节点:其中的注释内容

获取DOM元素

  必须拿到相应的DOM元素,才能对它进行操作。文本,注释这两个节点不能够直接选取,需要获得包含他们的元素节点之后,通过元素节点的属性获取。通过操作之前我们还有一件事情需要搞清楚,DOMAPI在js中是以怎样的形式存在的。

  js根对象:Object是js中的根对象,几乎所有对象都拓展于它。

  window:window对象是浏览器环境提供的,拓展于Object的。window是浏览器环境中的全局对象。从程序度来看,每个页面都是一个独立的Window对象。

  document:是Window上的属性,代表当前页面中的整个文档对象。DOM API 就放在document中。

console.log(document === window.document); //true
console.log(document);

  chrome中以上两条语句的输出

  

  通过ID获取:document.getElementById()

  通过className获取:document.getElementsByClassName()

  通过标签名称获取:document.getElementsByTagName()

  通过name(例如表单元素的name)属性值获取:document.getElementsByName()

  可接收类名,id名,标签名获取匹配到的第一个元素(文档中从上到下,从外到里):document.querySelector( 新)

  可接收类名,id名,标签名获取匹配到的所有元素:document.querySelectorAll(新)

节点遍历

  节点上有一些属性方便我们获取它的后代,附近的节点。考虑到我们日常工作中可能不需要操作注释节点,所以这些属性获取的结果被分为两类:查找过程忽略注释的,不忽略注释的。

  childNodes:所有子节点       获取所有子节点(包括注释)

  children:所有是标签类型的子节点    获取所有子元素

  parentNode:获取已知节点的父节点

  firstElementChild : 第一个子节点 (元素)

  firstChild : 第一个子节点

  lastElementChild:最后一个子节点(元素)

  lastChild:最后一个子节点

  nextElementSibling:下一个兄弟节点(元素)

  nextSibling:下一个兄弟节点

  previousElementSibling:上一个兄弟节点

  previousSibling:上一个兄弟节点//

创建节点

  document.createElement("标签名") : 创建新元素

  document.createTextNode("") : 创建文本节点

插入节点

  appendChild(node) : 向childNodes末尾插入一个节点node

  insertBefore(newElement,targetElement) : 向targetNode之前插入节点node

替换节点

 replaceChild(newNode,oldNode) : newNode替换节点oldNode

删除节点

  removeChild(node) : 移除父节点的某个子节点

  remove():移除当前节点

复制节点

  cloneNode(boolean) : 复制一个节点

DOM属性和样式操作

  DOM从程序角度看是不同类型的节点,这里的DOM特指的是元素类型(Element),这里的属性特指的是标签元素上的属性(id class 自定义 style...)。

  属性操作:getAttribute(属性名)、setAttribute(属性名,值)

var hero = document.getElementById("hero");
var heroAttr = hero.getAttribute("id");
console.log(heroAttr); // hero
hero.setAttribute("class","anmate fadeIn");
console.log(hero); // <div id="hero" data-imgsrc="xxx" class="anmate fadeIn">哈哈没想到吧,我又回来啦!</div>

  样式操作

    设置内联样式:dom.style.styleName = "value"

var hero = document.getElementById("hero");
hero.style.color = "red";
console.log(hero); //<div id="hero" data-imgsrc="xxx" style="color: red;">哈哈没想到吧,我又回来啦!</div>

    获取经过层叠计算后,最终应用到元素上的样式:ie(dom.currentStyle.styleName) / 非ie(getComputedStyle(对象,伪类).样式名)

function getCurrentStyle(dom,styleName){  if(window.getComputedStyle){    return window.getComputedStyle(dom).styleName;  }  return dom.currentStyle.styleName;}

DOM元素大小和位置

  offsetWidth     元素自身的宽度   width+border+padding

  offsetHeight    元素自身的高度   height+border+padding

  clientWidth      获取元素的宽度  width+padding(不包含border)

  clientHeight     获取元素的高度  height+padding(不包含border)

  offsetLeft     元素左边框距离父元素的距离(如果父级没有定位,就是相对于浏览器窗口。如果有定位,是对有定位的父级元素)

  offsetTop      元素上边框距离父元素的距离

客户区域

  document.documentElement.clientWidth

  document.documentElement.clientHeight

  document.body.clientWidth

  document.body.clientHeight

滚动属性

  注意:chrome下滚动条相关操作是放在 document.body之下的。

  scrollHeight, scrollWidth :scrollHeight返回的是元素的实际内容的高度,值=子元素的height值+元素的padding-top+父元素padding-bottom。

  scrollTop, scrollLeft: 返回已经滚动到元素的左边界或上边界的像素数。只有在元素有滚动条的时候,这些像素才有用。这些属性也只在文档的 <body> 或 <html> 标记上定义(这和浏览器有关),并且一起来制定滚动文档的位置。

// IE 6以上都可以
document.documentElement.scrollTop
// chrome
document.body.scrollTop

document常用属性

  document.body:body元素

  document.title:获取、设置文档的标题

  document.URL:获得当前页面完整的URL

  document.domain:获取当前页域名

........

原文地址:https://www.cnblogs.com/keliguicang/p/10991524.html

时间: 2024-10-10 07:41:01

DOM核心API及其相关重要概念的理解的相关文章

node学习日志(二)---核心API

最近看<node即学即用>,做点笔记~~ 一.核心API 1.[Events] **浏览器中的事件模型是从DOM中来的 **DOM是基于用户交互的用户驱动型事件模型,有着一组与树状结构对应的接口元素 **当用户与接口的某个特定部分交互时,对应有一个事件和一个相关的对象 **操作对象是在一棵树上,故模型包含了冒泡和捕获的概念,即可以沿着树向上或向下的元素也接收到被触发的事件 **javascript的事件模型没有树状结构,故更为简洁 [EventEmitter]提供基础的事件功能 [on方法]监

【repost】Javascript操作DOM常用API总结

Javascript操作DOM常用API总结 文本整理了javascript操作DOM的一些常用的api,根据其作用整理成为创建,修改,查询等多种类型的api,主要用于复习基础知识,加深对原生js的认识. 基本概念 在讲解操作DOM的api之前,首先我们来复习一下一些基本概念,这些概念是掌握api的关键,必须理解它们. Node类型 DOM1级定义了一个Node接口,该接口由DOM中所有节点类型实现.这个Node接口在JS中是作为Node类型实现的.在IE9以下版本无法访问到这个类型,JS中所有

javascript DOM常用API总结

作者:狼狼的蓝胖子 网址:http://www.cnblogs.com/lrzw32/p/5008913.html 文本整理了javascript操作DOM的一些常用的api,根据其作用整理成为创建,修改,查询等多种类型的api,主要用于复习基础知识,加深对原生js的认识. 基本概念 在讲解操作DOM的api之前,首先我们来复习一下一些基本概念,这些概念是掌握api的关键,必须理解它们. Node类型 DOM1级定义了一个Node接口,该接口由DOM中所有节点类型实现.这个Node接口在JS中是

Android笔记三十二.Android位置服务及核心API

一.位置服务概念 1.位置服务 位置服务(Location-Based Services,LBS),又称定位服务或基于位置的服务,融合了GPS定位.移动通信.导航等多种技术,提供了与个空间位置相关的综合应用服务. 2.GPS与网络位置提供器 Android平台支持提供位置服务的API,可以利用GPS(Global Positioning System,全球定位系统)和Network Location Provider(网络位置提供器)来获得用户的位置. (1)GPS相对来说更精确,但它只能在户外

Unit02: JDBC核心API

Unit02: JDBC核心API db.properties 注意:如果使用连接池,可以在这个文件中增加对连接池的相关设置: 连接池参数,常用参数有: 初始连接数 最大连接数 最小连接数 每次增加的连接数 超时时间 最大空闲连接 最小空闲连接 # db connection parameters # key=value driver=oracle.jdbc.driver.OracleDriver url=jdbc:oracle:thin:@192.168.201.227:1521:orcl u

Java核心API需要掌握的程度

分类: java技术2009-08-29 01:03 213人阅读 评论(0) 收藏 举报 javaapiswingxmlio Java的核心API是非常庞大的,这给开发者来说带来了很大的方便,经常人有评论,java让程序员变傻. 但是一些内容我认为是必须掌握的,否则不可以熟练运用java,也不会使用就很难办了. 1.java.lang包下的80%以上的类的功能的灵活运用. 2.java.util包下的80%以上的类的灵活运用,特别是集合类体系.正规表达式.时间.属性.和Timer. 3.jav

笔记-Node.js中的核心API之HTTP

最近正在学习Node,在图书馆借了基本关于Node的书,同时在网上查阅资料,颇有收获,但是整体感觉对Node的理解还是停留在一个很模棱两可的状态.比如Node中的模块,平时练习就接触到那么几个,其他的一些模块暂时只会在学习的时候接触到,不常用便就荒废了.正所谓好记心不如烂笔头,多做笔记还是更有利于理解和记忆.自己做的总结也方便回头复习,所以决定踏上漫长的修炼之旅-- Node提供了许多API,其中一些比较重要.这些核心的API是所有Node应用的支柱,你会不停的用到他们. HTTP服务器 Nod

笔记-Nodejs中的核心API之Events

最近正在学习Node,在图书馆借了基本关于Node的书,同时在网上查阅资料,颇有收获,但是整体感觉对Node的理解还是停留在一个很模棱两可的状态.比如Node中的模块,平时练习就接触到那么几个,其他的一些模块暂时只会在学习的时候接触到,不常用便就荒废了.正所谓好记心不如烂笔头,多做笔记还是更有利于理解和记忆.自己做的总结也方便回头复习,所以决定踏上漫长的修炼之旅-- Node提供了许多API,其中一些比较重要.这些核心的API是所有Node应用的支柱,你会不停的用到他们. Events 几乎所有

linux设备驱动归纳总结(一)内核的相关基础概念【转】

本文转载自:http://blog.chinaunix.net/uid-25014876-id-59413.html linux设备驱动归纳总结(一):内核的相关基础概念 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 一.linux设备驱动的作用 内核:用于管理软硬件资源,并提供运行环境.如分配4G虚拟空间等. linux设备驱动:是连接硬件和内核之间的桥梁. linu