DOM、javaScript与HTML

什么是DOM

        DOM,文档对象模型,全称Document Object Model。是一种独立与平台和语言的接口,他允许程序和脚本语言(最常用的就是JS)动态地访问和更新文档的内容、结构和样式。简单理解就是对网页内容进行修改的接口。
       DOM实际是上是以面向对象方式描述的对象模型,它将HTML或XML文档建模为一个个对象,以倒立的树状的结构显示,所以通常也称之为DOM树,树中的对象称为节点。
      根据DOM,HTML文档中的每个成分都是一个节点,DOM是这样规定的:
  • 整个文档是一个文档节点;
  • 每个HTML标签是一个元素节点;
  • 包含在HTML元素中的文本是文本节点;
  • 每一个HTML属性是一个属性节点;
  • 注释属于注释节点;
例如:
<html> 
	<head>
		<title>标题</title>		
	</head>
	<body>
		今天天气<span style="color:red;font-size:30px;">很好</span>,昨天很冷</p>
	</body>
</html>
对应的dom树如下:

此处借用一张导图:

DOM的组成

DOM定义了HTML文档和XML文档的逻辑结构,给出了一种访问和处理这两种文档的方法。文档代表的是数据,而DOM则代表了如何去处理这些数据。  
作为W3C的标准接口规范,目前,DOM由三部分组成,包括:核心(core)、HTML接口和XML接口。  
核心部分是结构化文档比较底层对象的集合,这一部分所定义的对象已经完全可以表达出任何HTML和XML文档中的数据了。  
HTML接口和XML接口两部分则是专为操作具体HTML文档和XML文档所提供的高级接口。


如何使用

我们可以使用JS语言来操作DOM从而来改变网页,但是要改变页面的某个东西,JS就需要获得对HTML文档中所有元素进行访问的入口。这个入口连同对HTML元素进行添加、移动、改变后移除的方法和属性,都是通过DOM来获得的。
访问节点
我们可以通过“Document.getElementById("id的字符串")”来获得页面中指定id的节点对象,然后执行增删改;
我们也可以通过“ document.getElementByTagName("标签名");”来获得页面中所有标签名符合要求的标签,

修改节点;修改节点就是修改节点的属性与包含的文本,想要修改节点首先的通过访问节点的两种方法来获得节点。
document.getElementById(id).innerHTML=new HTML;使用innerHTML属性,来改变HTML内容;例如:
<html>
<body>

<p id="p1">Hello World!</p>

<script>
document.getElementById("p1").innerHTML="New text!";
</script>

</body>
</html>

document.getElementById(id).attribute=new value;使用以上语法来改变HTML元素的属性;例如:
<!DOCTYPE html>
<html>
<body>

<img id="image" src="smiley.gif">

<script>
document.getElementById("image").src="landscape.jpg";
</script>

</body>
</html>

document.getElementById(id).style.property=new style; 使用以上语法来改变HTML元素的样式;例如:
<p id="p2">Hello World!</p>

<script>
document.getElementById("p2").style.color="blue";
</script>

删除节点
<div id="div1">
<p id="p1">这是一个段落。</p>
<p id="p2">这是另一个段落。</p>
</div>

<script>
var parent=document.getElementById("div1"); //找到id="div1"的元素
var child=document.getElementById("p1");    //找到id="P1"的<P>元素
parent.removeChild(child);                  //从父元素中删除子元素
</script>
       如果能够在不引用父元素的情况下删除某个元素,就太好了。不过很遗憾。DOM 需要清楚您需要删除的元素,以及它的父元素。

增加节点
<div id="div1">
<p id="p1">这是一个段落</p>
<p id="p2">这是另一个段落</p>
</div>

<script>
var para=document.createElement("p");                 //通过createElement创建新的<P>元素
var node=document.createTextNode("这是新段落。");     //如需向 <p> 元素添加文本,您必须首先创建文本节点。这段代码创建了一个文本节点
para.appendChild(node);                               //然后通过appendChild,向 <p> 元素追加这个文本节点

var element=document.getElementById("div1");          //最后您必须向一个已有的元素追加这个新元素,这段代码找到一个已有的元素
element.appendChild(para);                            //这段代码向这个已有的元素追加新元素
</script>



DOM 和 HTML是一回事吗?

       就像很多人把JQuery和Javascript的本质搞混一样,DOM和HTML也完全不是一回事,DOM是一个API,HTML(Hyper Text Markup Language)则是一种标记语言,HTML在DOM的模型标准中被视为对象,DOM只提供编程接口,却无法实际操作HTML里面的内容。但是前端工程师,一般在浏览器端操作HTML。每个Web浏览器都会使用DOM,所以页面可以被脚本语言访问。而所有的浏览器都是以Javascript作为默认的脚本语言。所以HTML在浏览器端基本上可以直接通过DOM模型来操作,通过<script>标签载入或者直接插入Javascript脚本,通过DOM直接操作浏览器端的HTML文件。正是这种无缝融合,导致DOM和HTML的概念很容易混淆。

DOM 和 JavaScript什么关系?

       Javascript可以通过DOM直接访问和操作网页文档的内容,一开始,DOM是为方便Javascript操作设计的API。但其实发展到后来,他们是两个独立的个体。而且Javascript不是唯一可以使用DOM的编程语言,比如python也可以访问DOM。所以DOM不是提供给Javascript的API,也不是Javascript里的API。但JavaScript可以通过DOM访问和操作HTML和XML文档内容。

结语

       操作 DOM 可以让你更改网页的交互方式。所有网页的交互都依赖这种 DOM 技术,即使不用 Javascript,也可以使用其他语言来操作 DOM。DOM 是一颗树,树枝和树叶都做了编号,你告诉一个脚本,一个函数去寻找哪一个枝干的哪一个叶子,对这个叶子做什么改变。

评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木子松的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值