DOM操作的5個基本方法

来源:http://www.cnblogs.com/wr314/archive/2016/03/25/5320900.html
-Advertisement-
Play Games

JavaScript的 DOM操作,主要是對DOM這三個字母中D、O、M的操作。D代表的是document(文檔),即我們可以使用javascript對文檔進行操作,O代表的是object(對象),對象包括用戶自定義對象,內建對象和宿主對象,這裡不再贅述,M代表的是model(模型),今天我們主要講 ...


      JavaScript的 DOM操作,主要是對DOM這三個字母中D、O、M的操作。D代表的是document(文檔),即我們可以使用javascript對文檔進行操作,O代表的是object(對象),對象包括用戶自定義對象,內建對象和宿主對象,這裡不再贅述,M代表的是model(模型),今天我們主要講的就是model。

    model,就是把一份文檔表示成一份樹狀結構的模型(ps:實在找不到圖了,我覺得樹狀結構還是很容易腦補出來的吧!),這個樹狀結構由無數個節點組成,因為這個性質,所以,我們可以把整個文檔叫做節點樹。這些節點組成了整個文檔,就像蓋房子一樣,文檔是一座房子,那麼節點就是磚頭。(這樣的比喻還有很多)

  節點主要分為三種:元素節點、文本節點,和屬性節點。

<p color="red">hello world!</p>

  上面這段html代碼當中p就是元素節點,hello world!就是文本節點,color=”red”就是屬性節點;

  今天介紹的5種方法中,有三種就是獲取元素的方法

1.document.getElementById(id);

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>學習日記</title>
</head>

<body>
<p id="text">網路就像一個有神奇魔力的水晶球,從中我們可以找到無窮無盡的樂趣。 </p>
<p id="pic"><img src="images/a._Sun.jpg" width="128" height="128" /></p>
<script>
  alert(typeof document.getElementById("text"));
</script>
</body>
</html>

上面這段代碼就是使用該方法獲取了文檔當中id為“text”  的獨一無二的元素,該方法返回的是對應此獨一無二元素的一個對象,我們用typeof操作符驗證結果。上一段代碼的輸出結果為object。

2.document.getElementsByTagName(tag);

tag表示的是元素的名字,該方法返回的是一個數組,數組中包含了文檔中所有此元素對應的對象。

<script> 
  var para=document.getElementsByTagName("p");
  for(i=0;i<para.length;i++){
    alert(typeof para[i]);
  }
</script> 

把上面的一段代碼代替第一段代碼當中的javascript部分,para就是這個文檔當中所有p元素的集合,既然是集合,那他必定有length屬性,代表數組的長度。輸出結果為兩個object。

3.getElementsByClassName(class);

HTML5 DOM中新增的方法,獲取文檔中所有class屬性為class的值。

但是,只有較新的瀏覽器才支持這個方法,所以程式員需要用已經有的方法來實現這個方法

function getElementsByClassName(node,classname){
        //如果瀏覽器支持,使用現有方法
        if(node.getElementsByClassName){
        return node.getElementsByClassName(classname);
        }else{
        var results=new Array();
        var elems = node.getElementsByTagName("*");
        for(var i=0;i<elems.length;i++){
            if(elems[i].className.indexof(classname)!=-1){
                results[results.length]=elems[i]
            }
        }
        return results;
        }
    }

下麵舉一個例子:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>學習日記</title>
</head>

<body>
<p id="text">網路就像一個有神奇魔力的水晶球,從中我們可以找到無窮無盡的樂趣。 </p>
<p id="pic"><img src="images/a._Sun.jpg" width="128" height="128" /></p>
<ul id="line">
<li class="row1">row1</li>
<li class="row1">row1</li>
<li class="row2">row2</li>
<li class="row2">row2</li>
</ul>
<script> 
    var line=document.getElementById("line");
    var row1=line.getElementsByClassName("row1");
    alert(row1.length);
</script>
</body>
</html>

上面的代碼表示id為“line”節點下class為“row1”的元素的個數。

4.object.getAttribute(attribute);

獲取某元素的屬性值

var paras=document.getElementsByTagName("img");
    for(var i=0;i<paras.length;i++){
        alert(paras[i].getAttribute("width"));
    }

上面代碼獲取了img標簽的width屬性的值。

也可以在for迴圈裡面加一個if判斷,判斷可不可以取到相應的屬性,提高代碼的可讀性。

5.object.setAttribute(attribute,value);

設置某個元素屬性的值。

var imgs=document.getElementsByTagName("img");
    for(var i=0;i<imgs.length;i++){
        var width_val=imgs[i].getAttribute("width");
        if(width_val){
        imgs[i].setAttribute("width","228");
        }
    }

把img的width屬性值設置為“228”。

 

 

 

以上的5個方法是dom操作中最基本,最常用的5個方法。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • × 目錄 [1]相對定位 [2]固定定位 前面的話 一般地,說起定位元素是指position不為static的元素,包括relative、absolute和fixed。前面已經詳細介紹過absolute絕對定位的基礎和應用,這篇博客介紹和梳理相對定位relative和固定定位fixed的相關知識 相 ...
  • 以下內容都是關於在nodejs中的this而非javascript中的this,nodejs中的this和在瀏覽器中javascript中的this是不一樣的。 在全局中的this 全局中的this預設是一個空對象。並且在全局中this與global對象沒有任何的關係,那麼全局中的this究竟指向的 ...
  • 一個簡單例子: 2.2版本需要引用jquery,要習慣把js代碼寫到頁面底部,經測試,發現此代碼不支持IE10/11,以下提供相容IE的function,替換js部分即可 最後,需要註意的是不要在本地調度,你會發現不會生效,因為Flash的安全限制 擴展閱讀:http://www.365mini.c ...
  • 第9章,裝飾網站導航 限制訪問,處於隱私方面考慮,瀏覽器已經開始限制可以對偽類:visited應用哪些CSS屬性了。其中包括對已訪問過的鏈接定義color、background-color、border-color等樣式(除非已經為那些鏈接的正常狀態定義了顏、背景色和邊框色) 對於<a>標簽可以對所 ...
  • 1.在Html中引入相關的文件:引入風格文件(js/css/jq) 2.創建myFocus標準的Html的結構並填充內容 <div id="picBox"> <div class="pic"> <ul> <li></li> <li></li> </ul> </div> </div> 3.調用 myF ...
  • 在JS中有全局作用域和函數作用域,而在Nodejs中也自己的作用域,分為全局作用域(global)和模塊作用域。 js作用域: 以前學js的時候我們的全局對象是window,如: 我們定義的全局變數預設是給window添加一個屬性或者方法。 報錯,因為num是在函數中定義的,在函數外部是訪問不了函數 ...
  • 第二十二章 1、 安全的檢測是使用:Object.prototype.toString.call(value); eg: PS:JSON的: 2、 作用安全域的構造函數:(不然this會指向window) PS:使用作用安全域的構造函數,就會鎖定調用構造函數的環境,如果使用構造函數竊取模式的繼承而且 ...
  • 1 事件的三要素 事件源:有監聽的HTML標簽,能響應時間的HTML標簽,就是事件源。 事件名:用戶的特定行為,比如onclick(單擊) 事件的響應:就是一個個function 事件的響應,就是function,那麼編程就是編寫事件的響應。響應中,最重要的就是想清楚被操作的對象。 下麵給大家看一個 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 推薦一款基於.NET 8、WPF、Prism.DryIoc、MVVM設計模式、Blazor以及MySQL資料庫構建的企業級工作流系統的WPF客戶端框架-AIStudio.Wpf.AClient 6.0。 項目介紹 框架採用了 Prism 框架來實現 MVVM 模式,不僅簡化了 MVVM 的典型 ...
  • 先看一下效果吧: 我們直接通過改造一下原版的TreeView來實現上面這個效果 我們先創建一個普通的TreeView 代碼很簡單: <TreeView> <TreeViewItem Header="人事部"/> <TreeViewItem Header="技術部"> <TreeViewItem He ...
  • 1. 生成式 AI 簡介 https://imp.i384100.net/LXYmq3 2. Python 語言 https://imp.i384100.net/5gmXXo 3. 統計和 R https://youtu.be/ANMuuq502rE?si=hw9GT6JVzMhRvBbF 4. 數 ...
  • 本文為大家介紹下.NET解壓/壓縮zip文件。雖然解壓縮不是啥核心技術,但壓縮性能以及進度處理還是需要關註下,針對使用較多的zip開源組件驗證,給大家提供個技術選型參考 之前在《.NET WebSocket高併發通信阻塞問題 - 唐宋元明清2188 - 博客園 (cnblogs.com)》講過,團隊 ...
  • 之前寫過兩篇關於Roslyn源生成器生成源代碼的用例,今天使用Roslyn的代碼修複器CodeFixProvider實現一個cs文件頭部註釋的功能, 代碼修複器會同時涉及到CodeFixProvider和DiagnosticAnalyzer, 實現FileHeaderAnalyzer 首先我們知道修 ...
  • 在軟體行業,經常會聽到一句話“文不如表,表不如圖”說明瞭圖形在軟體應用中的重要性。同樣在WPF開發中,為了程式美觀或者業務需要,經常會用到各種個樣的圖形。今天以一些簡單的小例子,簡述WPF開發中幾何圖形(Geometry)相關內容,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 在 C# 中使用 RabbitMQ 通過簡訊發送重置後的密碼到用戶的手機號上,你可以按照以下步驟進行 1.安裝 RabbitMQ 客戶端庫 首先,確保你已經安裝了 RabbitMQ 客戶端庫。你可以通過 NuGet 包管理器來安裝: dotnet add package RabbitMQ.Clien ...
  • 1.下載 Protocol Buffers 編譯器(protoc) 前往 Protocol Buffers GitHub Releases 頁面。在 "Assets" 下找到適合您系統的壓縮文件,通常為 protoc-{version}-win32.zip 或 protoc-{version}-wi ...
  • 簡介 在現代微服務架構中,服務發現(Service Discovery)是一項關鍵功能。它允許微服務動態地找到彼此,而無需依賴硬編碼的地址。以前如果你搜 .NET Service Discovery,大概率會搜到一大堆 Eureka,Consul 等的文章。現在微軟為我們帶來了一個官方的包:Micr ...
  • ZY樹洞 前言 ZY樹洞是一個基於.NET Core開發的簡單的評論系統,主要用於大家分享自己心中的感悟、經驗、心得、想法等。 好了,不賣關子了,這個項目其實是上班無聊的時候寫的,為什麼要寫這個項目呢?因為我單純的想吐槽一下工作中的不滿而已。 項目介紹 項目很簡單,主要功能就是提供一個簡單的評論系統 ...