Web网页的一般能够通过document以及document所相关的各种元素组成。当然我们也能够通过层次结构的树形结构在展现Web页面。假设要对一个网页进行改动的话,我们能够通过document对象。Node对象以及Element对象进行相关的操作。

【Document对象】是全部页面元素的全部者或是父节点,绝大多数用来创建新元素实例的工厂方法都是核心document对象的方法。

DOM1——定义了DOM的基础设施,包含模式和API

DOM2——增强了对CSS的支持,改进了对document元素的訪问方法

DOM3——除了对之前版本号的扩展和改进之外,该版本号还增强了支持Web服务的模块,增强了对XML的支持。

这里主要讲述DOM HTML API:

DOM HTML API具有非常好的自描写叙述性。它有专门的对象名称。旨在引入扩浏览器存在的很多BOM实现,方便往后兼容。HTML API不仅从主要的HTMl元素中继承了属
性和方法,还会从核心的Node对象中继承。

绝大多数的HTML对象也是从HTMLElement中继承的。基于同意的元素属性{id,title,lang,dir,className};每一个HTML对象的名
字都是从HTML正式元素的名称中获取的。比如:HTMLFormElement是HTML中表单元素的接口对象,通过该对象能够訪问该元素中全部的有效元素。

API对象没有构造函数,不能独立于其它对象单独创建。要创建这些接口对象,须要使用一个工厂方法。这个工厂负责生产所需的对象。比如:为了在某个表格的最后
加入一行,我们须要通过工厂方法insertRow来加入一个表格行。var row=table.insertRow(-1)<!--当中table是一个表格对象>;为了为这个新建的表格行加入两个单元格,
能够使用工厂方法insertCell。var cell1=row.insertCell(0);vavr cell2=row.insertCell(1);同一时候能够通过removeCell和removeRow方法来删除表格单元格和表格行。

有些DOM HTML接口并不直接表示特定的HTML元素,而是表示对象的集合。对象的集合能够通过其父元素訪问,如document或form元素,它是用HTMLCollection接
口表示的。HTMLCollection接口仅仅有一个名为length的属性以及两个方法(一)item。參数位数字型的索引值(二)nameItem。參数是字符串。比如。使用DOM訪问图像。使
用item方法var img=document.images.item(0);使用namedItem方法var img=document.images.namedItem("original");

【Node对象】在W3C关于DOM规范中。将文档描写叙述成一个节点的集合。而且以层次结构的树形结构相连接。

能够使用不同的技术訪问网页内容树的节点(一)查询特定类型的全部标签(二)遍历整个树以探索每一个层级上的每一个节点。DOM树种元素之间存在:父子节点。兄弟节点的关系。

这里主要理解DOM Core API:

对于文档树中的每一个节点。都拥有DOM的Node对象中定义的全部基本属性集和基本方法集。

Node对象的属性记录着与DOM树内容相关的信息。包含兄弟节点元素。
子节点元素,父节点元素。

有一些属性用来记录节点的相关信息。包含类型,名字以及值。

Node对象的属性主要包含:nodeName nodeValue nodeType parentNode
childNodes firstChild lastChild等。

节点nodeType属性是数字型的。能够使用DOM规定的一组常量来替代数字訪问每种类型的节点。

比如:ELEMENT_NODE值为1;ATTRIBUTE_NODE值为2;
TEXT_NODE值为3;COMMENT_NODE值为8等等。

可是IE对这样的长亮不支持。这时候能够对Node对象进行扩展或穿件全局的自己定义对象。把这些值保存到一个数组的
属性中。

document对象是与web页面文档之间的核心接口。我们能够使document.getElementById();document.getElementsByTagName();document.getElementsByClass();

来创建新对象。

【Element对象】Element属性并不总是能够通过对象属性訪问的。假设想要使用这种Element属性时,而它不是作为对象类提供的属性。那么我们就能够使用Element方法。我们能够使用这个方案获取,设置和检查属性值是否存在:getAttribute(name)      setAttribute(name,value)       removeAttribute(name);             getAttributeNode(name)

setAttributeNode(name,value)        removeAttributeNode(name);       hasAttribute(name)

实际上document对象能够或多或少的处理上下文中的全部东西,只是有时候你可能须要处理嵌套在其它元素中的元素,这时候可能就须要Node和Element对象。

比如:有两个包括段落元素的div块:第一个div块包括两个段落,第二个块包括一个段落。

<div id="div1">

<p>one</p>

<p>two</p>

</div>

<div id="div2">

<p>three</p>

</div>

怎样才干仅仅获得第一个div块中的段落元素呢?

var div=document.getElementById("div1");

var ps=div.getElementByTagName("p");    //当中的ps就是第一个div块中的两个段落ps[0]和ps[1]

【改动文档树】

web网页能够以层次结构的树形结构呈现,那我们能够通过改动文档树来达到我们所须要的网页。当中document对象的方法来创建新元素实例的工厂方法;Node对象提供了层次树形结构的文档树支持;Element元素提供了一种訪问其上下文内元素的方法。以对嵌套在该元素内的元素进行改动。

document对象的工厂方法:createElement(tagname)——创建特定类型的元素

createDocumentFragment——DocumentFragment是个轻量级的document对象。用于获取文档树中一部分。假设想在DOM树中加入大
量的节点,先使用createDocumentFrgment方法创建一个documentFragment。接着为其加入节点,然后将documentFragment加入到文档树中。

createTextNode(data)——保存页面中的文本

当创建了一个新节点之后。能够使用Node方法将其加入到现有文档树中:

insertBefore(newChild,refChild)——在refChild指定的现有节点前插入新节点

replaceChild(newChild,oldChild)——替换现有节点

removeChild(oldChild)——删除现有子节点

appendChild(newChild)——为文档加入新的子节点

注意:必须在正确的上下文中调用这些方法。

也就是要在包括要替换或删除的节点的元素上运行以上操作。

JavaScript——DOM或以树形展示的Web页面的更多相关文章

  1. Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析

    加速IE浏览器自动化执行效率:Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析 1.技术背景       在Web应用中,用户通过键盘在输入框中输入值和鼠标点击按钮,链 ...

  2. 一个Web页面的问题分析

    几个月之前我接到一个新的开发任务,要在一个旧的Web页面上面增添一些新的功能.在开发的过程中发现旧的代码中有很多常见的不合适的写法,结合这些问题,如何写出更好的,更规范的,更可维护的代码,就是这篇文章 ...

  3. 使用webview查找元素,appium查找web页面元素

    9 webview查找元素 9.1 webview 简介 WebView是android中一个非常重要的控件,它的作用是用来展示一个web页面.它使用的内核是webkit引擎,4.4版本之后,直接使用 ...

  4. WEB 技术分类 Javascript DOM(Element Node) BOM

    Web technology for developers   Web 技术文档 备注:本文介绍web technology的分类,各自职责,因为之前一直就没有搞明白各种技术.各种名词究竟是属于哪个范 ...

  5. Java web JavaScript DOM 编程

     JavaScript DOM 编程 (1).DOM概述及分类 (2).DOM结构模型:XML DOM 和 HTML DOM 关系? (3).结点,结点树,结点属性与方法? 1.DOM是什么? d ...

  6. Web 建站技术中,HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、ASP.NET、Web Services 是什么(转)

    Web 建站技术中,HTML.HTML5.XHTML.CSS.SQL.JavaScript.PHP.ASP.NET.Web Services 是什么?修改 建站有很多技术,如 HTML.HTML5.X ...

  7. JavaScript DOM 编程艺术

    最近把JavaScript DOM 编程艺术这本书看完了,觉得这本书很好 深入浅出地展示了渐进增强.平稳退化.结构和样式分离等编程思想,我对书中重要的知识进行了梳理总结. 一.网页 二.JavaScr ...

  8. 读书笔记:JavaScript DOM 编程艺术(第二版)

    读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Nets ...

  9. Javascript.//DOM

    文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口.Document Object Model的历史可以追溯至1990年代后期微 ...

随机推荐

  1. 【statistics】理想论坛2018-4-25日统计

    说明:利用理想论坛爬虫1.07版(http://www.cnblogs.com/xiandedanteng/p/8954115.html) 下载了前十页主贴及子贴,共得到359619条数据,以此数据为 ...

  2. 【C#】利用JMail发送邮件

    有用到需要发送帐号激活邮件,利用Jmail去做蛮简单的,先记录下: 1.首先到Jmail官网下载对应的版本,解压后安装(Jmail 4.4 免费版). 2.到安装目录就可以找到jmail.dll文件, ...

  3. VS编程常见的编译和链接错误

    常见错误1: Error 2 error LNK1120: 1 unresolved externals Error 1 error LNK2019: unresolved external symb ...

  4. redis sentinel(哨兵机制)部署(Windows下实现)

    另外参考:http://www.cnblogs.com/LiZhiW/p/4851631.html 一.准备条件 1.操作系统:win7 2.redis版本:redis-2.8.19 二.下载Redi ...

  5. linux驱动杂项

    linux驱动 结构体中的逗号 http://zhouyang340.blog.163.com/blog/static/3024095920123495051607/ 下面我们看一个例子,Linux- ...

  6. 在VC中创建DLL文件的方法步骤

    一.Win32动态链接库 1.制作的步骤: (1)新建WIN32 Dynamic-link Library工程,工程名为MyDll,选择A simple DLL project类型. (2)MyDll ...

  7. 【BIRT】在页面上展示xxxx年xx月xx日

    我们在做报表开发的时候经常会遇到一个问题,就是需要在报表上展示”xxxx年xx月xx日”这种日期,例如:需要在报表展示日期如下图: 我们现在数据库存储的日期是:20171231 那么我们如何转化为 这 ...

  8. python之函数用法isinstance()

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法isinstance() #isinstance() #说明:返回一个布尔值,判断数据 ...

  9. LR函数基础(二)

    (一)用到的函数: (1) web_set_option()   //重定向设置 (2)web_reg_save_param和custom_request都常于处理参数的动态生成. web_reg_s ...

  10. linux 使用wc命令统计文件行数、字数及大小

    语法:wc [选项] 文件… 说明:该命令统计给定文件中的字节数.字数.行数.如果没有给出文件名,则从标准输入读取.wc同时也给出所有指定文件的总统计数.字是由空格字符区分开的最大字符串. 该命令各选 ...