DOM文档对象模型

网页是一个动态的数据结构,你可以通过javascript与之交互,你可以访问并读取网页中元素的内容,还可以修改网页的内容和结构。为此我们必须暂时回过头去深入了解JS和HTML是如何工作的?

JavaScript和HTML是如何协同工作的?

javascript和HTML是两种不同的东西:HTML是标记,而JavaScript是代码,他们是如何交互的呢?即文档对象模型实现的。DOM是怎么来的呢?它是浏览器在加载网页时创建的。创建过程如下:

  1. 浏览器在加载网页时,不仅会对HTML进行分析并将其渲染到显示器,还创建一系列表示标记的对象。这些对象存储在DOM中。
  2. js代码可以通过与dom交互来访问元素及其内容,还可使用DOM来创建或删除元素
  3. js代码修改dom时,浏览器会动态地更新网页,让用户能够在网页中看到新内容

两种截然不同的技术是怎么走到一起的?

HTML和JavaScript肯定来自不同星球。HTML的DNA是由生命式标记组成,让我们能够描述一系列组成网页的嵌套元素。

JavaScript的DNA完全是由算法遗传物质组成的,用于对计算进行描述。

它们根本就不是一路人,是不是无法交流呢?当然不是,因为它们之间有座桥梁DOM.通过DOM,JavaScript能够与网页交流

这部分代码<head>部分隐藏了

1 <body>
2 <h1>Green Planet</h1>
3 <p id="greenplanet">All is well</p> 
4 <h1>Red Planet</h1>
5 <p id="redplanet">Nothing to report</p> 
6 <h1>Blue Planet</h1>
7 <p id="blueplanet">All systems A-OK</p>
8 
9 </body>

如何自己动手制作JS和html之间的桥梁DOM

首先创建一个document节点

接下来,提取HTML网页中的顶级元素,将其视为当前元素,京作为document的子节点加入DOM中

对于嵌套在当前元素中的每个元素,都将其作为当前元素的子节点加入DOM中

对于刚刚添加的每个元素,都重复第三步,知道所有元素都加入了DOM中。(274)

 

 

使用document对象访问DOM

getElementById获取html元素

1 /*调用getElementById,找到并返回id为greenplanet的元素,将元素赋给变量planet*/
2 var planet=document.getElementById("greenplanet");

使用getElementById方法,通过指定的id获取一个元素,该方法接受一个id,并返回该id指定的元素。得到的是一个id为greenplanet的<p>元素

 

 从DOM获取的到底是什么?

使用getElementById从DOM中获取元素时,得到的是一个元素对象,你可以使用它来读取、修改或替换元素的内容和特性。神奇之处在于,当你修改元素时,所做的修改也将反映到网页中。元素,对象也由属性和方法,我们可以使用属性和方法来读取修改元素,下面是可以对元素对象执行的一些操作。

 

 

innerHTML修改元素内容

planet.innerHTML="Red Alert:hit by phaser fire!";
console.log(planet.innerHTML);

此处使用元素对象的属性innerHTML修改元素的内容,使用可以有读取或替换元素的内容

修改内容会由什么影响呢?

他会即时的修改网页的内容。当你修改DOM内容时,网页也随之发生变化。

通过setAttribute修改元素属性

planet.setAttribute("class","redtext ");

获取DOM中的元素之后,将属性class的值改成redtext.如果html对象没有class属性,将会创建一个属性

 

 

通过getAttribute获取html元素的属性值

var clatext=planet.getAttribute("class");

如果指定的属性值不存在,将返回null

事件处理程序

处理DOM时候,确保代码要在网页完全加载之后再执行至关重要,否则,执行代码是,DOM很可能还未能创建。

创建一个函数,在其中包含要在网页加载完毕之后要执行的代码

1     function init(){
2         var planet=document.getElementById("greenplanet");
3         planet.innerHTML="Red Alert:hit by phaser fire!";
4         planet.setAttribute("class","redtext ");
5         var clatext=planet.getAttribute("class");
6         console.log(clatext);
7     }

然后将这个函数赋值给windows的属性onload

1     window.onload=init;

现在更加深入的研究以下onload的工作原理,因为它使用了一个很常见的js编码模式:事件处理程序

给了解事件的对象提供一个函数,事件发生后,这个对象将通过调用这个函数来通知你。刚刚我们演示的是“网页加载完毕”事件,我们可以通过设置对象windows的属性onload来处理它

DOM还有那些新功能

  1. 获取DOM元素
  2. 创建元素并将其加入到dom中去
  3. 从DOM中删除元素
  4. 遍历DOM中的元素

 

posted @ 2022-04-22 15:57  炸鸡好吃真好吃  阅读(80)  评论(0编辑  收藏  举报