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 MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...