闲时吹吹牛 發表於 2019-12-23 17:16:00

javascript DOM和DOM操作的四种基本方法

<p><strong>在了解了javascript的语言特性后,javascript真正大放光彩的地方来了——这就是javascript DOM</strong></p>
<p>&nbsp;</p>
<h2 id="javascript-dom"><span style="color: rgba(255, 0, 0, 1)"><strong>Javascript DOM</strong></span></h2>
<blockquote>
<p><span style="color: rgba(0, 0, 0, 1)">DOM(Document Object Model),文档对象模型。</span></p>
<p><span style="color: rgba(0, 0, 0, 1)">简单的说就是一套操作文档内容的方法。</span></p>
</blockquote>
<p>&nbsp;</p>
<h3><span style="color: rgba(255, 0, 0, 1)"><strong>文档:DOM的D&nbsp;</strong></span></h3>
<p><span style="color: rgba(0, 0, 0, 1)"><strong>如果没有document(文档),DOM就无从谈起。当创建了一个网页并把它加载到web浏览器中,DOM就悄然而生,它将根据你编写的网页文档创建一个文档对象。</strong></span></p>
<p>&nbsp;</p>
<h3><span style="color: rgba(255, 0, 0, 1)"><strong>对象:DOM的O&nbsp;</strong></span></h3>
<p><strong>javascript中的对象分为三种:用户自定义对象(用户自己创建的对象),内建对象(内建在js语言的对象,如Array,Math,Date),宿主对象(由浏览器提供的对象,最基础的就是window对象) </strong><br><strong>Window对象对应浏览器窗口的本身,这个对象的属性和方法通常称为BOM(浏览器对象模型)。但我们不需要与BOM打太多交道,我们需要将注意力集中到浏览器窗口的内部而不是浏览器窗口本身。我们将着重探讨如何对网页的内容进行处理,而用来实现这一目标的载体就是document对象。</strong><br><br></p>
<h3><span style="color: rgba(255, 0, 0, 1)"><strong>模型:DOM的M&nbsp;</strong></span></h3>
<p><strong>代表某种事物的表现形式。就像一个火车模型代表一列火车,一张地图代表一个城市一样,DOM代表被加载到浏览器窗口里的当前网页。浏览器向我们提供了当前网页的“地图”,我们可以通过javascript去读取这张“地图”。既然是地图,就必须有诸如方向,比例尺等记号。要想看懂地图,就必须弄懂这些记号的含义。所以我们必须要把各种用来描述文档的记号弄明白。</strong></p>
<p>&nbsp;</p>
<blockquote>
<p><strong>需要注意的是,我们需要把DOM当作一个整体,不能分割看待,即DOM(文档对象模型)是一套操作文档内容的方法。</strong></p>
</blockquote>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>DOM把一份文档表示为一棵树(节点树),是我们理解和运用这一模型的关键。&nbsp;</p>
<p>&nbsp;</p>
<p><strong>例如:</strong></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> &lt;!DOCTYPE html&gt;
<span style="color: rgba(0, 128, 128, 1)"> 2</span> &lt;html&gt;
<span style="color: rgba(0, 128, 128, 1)"> 3</span> &lt;head&gt;
<span style="color: rgba(0, 128, 128, 1)"> 4</span>   &lt;title&gt;Shopping list&lt;/title&gt;
<span style="color: rgba(0, 128, 128, 1)"> 5</span>   &lt;meta charset=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">utf-8</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;
<span style="color: rgba(0, 128, 128, 1)"> 6</span> &lt;/head&gt;
<span style="color: rgba(0, 128, 128, 1)"> 7</span> &lt;body&gt;
<span style="color: rgba(0, 128, 128, 1)"> 8</span> &lt;h1&gt;What to buy&lt;/h1&gt;
<span style="color: rgba(0, 128, 128, 1)"> 9</span> &lt;p id=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">buy</span><span style="color: rgba(128, 0, 0, 1)">"</span> title=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">a gentle reminder</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;Don<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">t forget to buy this stuff&lt;/p&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">10</span> &lt;ul id=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">purchases</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;
<span style="color: rgba(0, 128, 128, 1)">11</span>   &lt;li&gt;A tin od beans&lt;/li&gt;
<span style="color: rgba(0, 128, 128, 1)">12</span>   &lt;li&gt;Cheese&lt;/li&gt;
<span style="color: rgba(0, 128, 128, 1)">13</span>   &lt;li&gt;Milk&lt;/li&gt;
<span style="color: rgba(0, 128, 128, 1)">14</span> &lt;/ul&gt;
<span style="color: rgba(0, 128, 128, 1)">15</span> &lt;/body&gt;
<span style="color: rgba(0, 128, 128, 1)">16</span> &lt;/html&gt;</pre>
</div>
<p>&nbsp;</p>
<p><strong>用树表示这个网页的结构:</strong></p>
<p>&nbsp;</p>
<p><img src="https://img2018.cnblogs.com/i-beta/1846802/201912/1846802-20191223171029165-1151498103.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>DOM存在着不同类型的节点:</strong></p>
<p>1.元素节点:DOM的原子是元素节点。事实上,文档的每一个元素都是一个对象。<br>2.文本节点:元素节点构成文档的结构,则文本节点构成文本的内容。文本节点总是被包含在元素节点的内部,但并不是所有元素节点都包含文本节点。 <br>3.属性节点:元素或多或少都具有一些属性。 <br>(除外,还有一些其它类型的节点,如注释)</p>
<p>&nbsp;</p>
<h2 id="dom操作的四种基本方法"><span style="color: rgba(255, 0, 0, 1)">DOM操作的四种基本方法</span></h2>
<p><strong><span style="color: rgba(0, 0, 0, 1)">DOM操作的四种基本方法:getElementById(), getElementsByTagname(), getAttribute(), setAttribute()</span></strong></p>
<h4 id="1-getelementbyid"><strong>1. getElementById():</strong></h4>
<blockquote>
<p>参数:元素的ID值。 (元素节点简称元素)&nbsp;<br>返回值:一个有指定ID的元素对象(元素是对象)&nbsp;<br>注:这个方法是与document对象相关联,只能由document对象调用。&nbsp;<br>用法:document.getElementById(Id)&nbsp;</p>
</blockquote>
<p><strong>例:</strong></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">typeof</span> document.getElementById(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">purchases</span><span style="color: rgba(128, 0, 0, 1)">"</span>);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">object</span></pre>
</div>
<p>&nbsp;</p>
<h4 id="2-getelementsbytagname">2. getElementsByTagName():</h4>
<blockquote>
<p>参数:元素名 <br>返回值:一个对象数组。这个数组里每个元素都是对象,每个对象分别对应着文档里给定标签的一个元素。 <br>注:这个方法可和一般元素关联。这个方法允许我们把通配符当作它的参数,返回在某份html文档里总共有多少个元素节点。 <br>用法:element.getElementsByTagName(TagName)&nbsp;</p>
</blockquote>
<p><strong>例:</strong></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> items=document.getElementsByTagName(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">li</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
items.length;</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">3</span>
document.getElementsByTagName(“*”);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">12</span></pre>
</div>
<p>&nbsp;</p>
<h4 id="3-getattribute">3. getAttribute():</h4>
<blockquote>
<p>参数:元素的某个属性名&nbsp;<br>返回值:这个元素属性的属性值&nbsp;<br>注:getAttribute()不能通过document对象调用,只能通过元素对象去调用它。&nbsp;<br>用法:object.getAttribute(Attribute)&nbsp;</p>
</blockquote>
<p><strong>例:</strong></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> para=document.getElementsByTagName(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">p</span><span style="color: rgba(128, 0, 0, 1)">"</span>);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">返回的是数组</span>
para[<span style="color: rgba(128, 0, 128, 1)">0</span>].setAttribute(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">title</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">a list of goods</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
para[</span><span style="color: rgba(128, 0, 128, 1)">0</span>].getAttribute(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">title</span><span style="color: rgba(128, 0, 0, 1)">"</span>);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">a list of goods</span></pre>
</div>
<p><strong>说明:</strong></p>
<p>通过setAttribute()方法对文档作出的改变,但这张改变并未反映到源代码中,也就是说,源代码中属性值仍旧是原来的属性值。这种“表里不一”的现象缘于DOM的工作模式:先加载文档的静态内容,再以动态方式对它们进行刷新,动态刷新不改变文档的静态内容,而对页面内容的刷新,不需要用户在他们的浏览器里执行刷新操作就可以实现。</p>
<p>&nbsp;</p>
<p><strong>DOM中还有许多其它的属性和方法,但这四种基本方法是编写许多DOM脚本的基石。</strong></p><br><br>
来源:https://www.cnblogs.com/yushihao/p/12084843.html
頁: [1]
查看完整版本: javascript DOM和DOM操作的四种基本方法