DOM

DOM“Document Object Modle”(文档对象模型)

DOM是HTML和XML文档的编程接口。它提供了对文档的结构化的表述,并定义了一种方式可以使从程序中对该结构进行访问,从而改变文档的结构,样式和内容。DOM 将文档解析为一个由节点和对象(包含属性和方法的对象)组成的结构集合。简言之,它会将web页面和脚本或程序语言连接起来。

1、文档
一个web页面是一个文档。这个文档可以在浏览器窗口或作为HTML源码显示出来,文档对象模型(DOM)提供了对同一份文档的另一种表现,存储和操作的方式。 DOM是web页面的完全的面向对象表述,它能够使用如 Javascript 等脚本语言进行修改。

2、对象
Javascript语言里的对象可以分为三种类型:

  • 用户定义对象(user-defined object):由程序员自行创建的对象。
  • 内建对象(native object):内建在Javascript里的对象,如Array、Math、Date等。
  • 宿主对象(host objec):由浏览器提供的对象,如Form、Image、Element等。

3、模型
DOM中的“M”代表着“Model”它的含义是某种事物的表现形式,浏览器向我们提供了当前网页的模型,我们可以通过Javascript去读取。

节点
节点(node)代表网络中的一个连接点,网络是由节点构成的集合。

  • 元素节点(element node):DOM的原子是元素节点
  • 文本节点(text node):<p>我是一段文本<p>p元素就是一个文本节点
  • 属性节点(attribute node):<p title="我是个标题">我是一段文本</p> title=”我是个标题”就是一个属性节点,属性节点总是被包含在元素节点当中。

DOM 提供的方法:

1、getElementById()方法

document.getElementById("purchases")

这个调用将返回一个对象,这个对象对应着 document 对象里独一无二的元素,那个元素的HTML id 属性值是 purchases 。

2、getElementsByTagname()方法

document.getElementsByTagname("li")`

这个调用将返回一个对象数组,每个对象分别对应着 document 对象中的一个列表项(li)元素,可以用 length 属性查出这个数组里的元素个数。

3、getAttribute() 方法
利用 getElementById() 方法和 getElementsByTagName() 方法找到那个元素之后,就可以用 getAttribute()方法把它各种属性值查询出来。
getAttribute() 方法是一个函数,他有一个参数——打算查询的属性的名字

object.getAttribute(attribute)

getAttribute() 方法不能通过document对象调用,例如,查询每个<p>元素的titile属性

var paras = document.getElementsByTagname("p");
for (var i=0; i<paras.length; i++) {
    alert(paras[i].getAttribute("title"));
}

如果这份文档中的 p 元素不带 title 属性,则相应的 getAttribute(“title”)调用将返回 null

4、setAttribute()方法
之前的3种方法都只能用来检索信息, setAttribute() 方法与它们有本质上的区别:它允许我们对属性节点的值做出修改
类似getAttribute()方法,setAttribute() 方法也是只能通过元素节点对象调用的函数,有两个参数:object.setAttribute(attribute,value)

5、createElement() 方法:

document.createElement("p")

创建一个新的元素

6、appendChild() 方法:

parent.appendChild(child)

把新创建的节点插入DOM节点树上

7、createTextNode() 方法:

document.createTextNode(text)

创建一个文本节点

8、insertBefore() 方法:

parentElement.insertBefore(newElement,targeElement)

将把一个新元素插入到一个现有元素的前面

DOM和Javascript
上面的几种示例都使用了 Javascript ,也就是说,它虽然是用JavaScript编写的, 却可以通过 DOM 来访问文档和其中的元素。DOM 并不是一个编程语言,但如果没有DOM, JavaScript 语言也不会有任何网页,XML页面以及涉及到的元素的概念或模型。在文档中的每个元素— 包括整个文档,文档头部, 文档中的表格,表头,表格中的文本 — 都是文档所属于的文档对象模型(DOM)的一部分,因此它们可以使用DOM和一个脚本语言如 JavaScript,来访问和处理。

JavaScript可以访问和操作存储在DOM中的内容,因此我们可以写成这个近似的等式:API (web 或 XML 页面) = DOM + JS (脚本语言)

访问DOM
当在创建一个脚本时-无论是使用内嵌 script 元素或者使用在web页面脚本加载的方法— 都可以使用 document 或 window 元素的API来操作文档本身或获取文档的子类(web页面中的各种元素)。

如使用 window 对象的 alert() 函数显示一个警告信息:<body onload="window.alert("welcome to my home page");">

除了定义 JavaScript的 script 元素外, 当文档被加载(以及当整个DOM可以被有效使用时),JavaScript可以设定一个函数来运行。下面的函数会创建一个新的 H1元素,为元素添加文本,并将H1添加在文档树中:

<html>
    <head>
        <script>
            //当文档加载时执行函数
            window.onload = function() {
                heading = document.createElement("h1");
                heading_text = document.createTextNode("Big Head");
                heading.appendChild(heading_text);
                document.body.appendChild(heading);
            }
        </script>
    </head>
    <body>
    </body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值