JS 07 Dom

来源:https://www.cnblogs.com/aknife/archive/2019/05/06/10816853.html
-Advertisement-
Play Games

DOM(Document Object Model): 結點的概念:整個文檔就是由層次不同的多個節點組成,可以說結點代表了全部內容。 結點類型 1.元素結點 2.屬性結點 3.文本結點 結點的註意點: 1.文本節點和屬性結點都看作元素結點的子結點 2.我們一般所說的結點指的就是元素結點,將html標 ...


DOM(Document Object Model): 結點的概念:整個文檔就是由層次不同的多個節點組成,可以說結點代表了全部內容。 結點類型 1.元素結點 2.屬性結點 3.文本結點   結點的註意點: 1.文本節點和屬性結點都看作元素結點的子結點 2.我們一般所說的結點指的就是元素結點,將html標簽看作是一個對象,並用“結點”稱呼它 3.結點的關係有:父子關係、兄弟關係   1.獲取元素結點 1)直接獲取 ① document.getElementById() ② document.getElementsByName() ③ document.getElementsByTagName() 2)間接獲取 父子關係 firstChild lastChild childNodes 子父關係 parentNode 兄弟關係 nextSibling previousSibling 2.操作屬性結點 1)通過對象“.”屬性,來操作屬性 優:可以動態獲取用戶修改的屬性值 缺:不能獲取自定義屬性的值 2)getAttribute("key") setAttribute("key","value") removeAttribute("key") 優:可以獲取自定義屬性的值 缺:不能動態獲取用戶修改的屬性值 3.處理文本結點 1) 通過對象.innerText 獲取標簽內部的文本信息 2) 通過對象.innerHTML 獲取標簽內部的HTML代碼       4.動態改變DOM結構 1)創建一個結點對象 document.createElement("標簽名") 2)(父結點)追加子結點對象 fatherNode.appendChild(子結點對象) 3)(父結點)在指定結點前添加子結點 fatherNode.insertBefore(新結點對象,參考結點對象) 4)(父結點)替換舊的子結點對象 fatherNode.replaceChild(新結點對象,舊結點對象) 5)(父結點)刪除舊子結點對象 fahterNode.removeChild(舊結點對象)   5.動態改變元素的CSS樣式(不重要) 1)我們通過對象.style屬性操作對象的css樣式:樣式名稱中有“-”將“-”去掉,並將“-”後一個字母改為大寫來作為樣式的新名稱 2)我們希望通過class為一個對象添加一個class樣式,添加屬性名是className,而並非class(class是js的關鍵字,並能作為屬性名存在)
<script type="application/javascript">
       //1.獲取元素結點
       //1)直接獲取
//        ① document.getElementById()
        function getEle1(){
            var obj=document.getElementById("userid")
            console.log(obj)
        }
//        ② document.getElementsByName()
        function getEle2() {
            // 獲取的是一個數組
            var obj = document.getElementsByName("fav");
            console.log(obj)
        }
//        ③ document.getElementsByTagName()
        function getEle3(){
            var obj = document.getElementsByTagName("input");
            console.log(obj);
        }


        function getEle4(){
            var father = document.getElementById("regForm");
            var sons = father.childNodes;
//                獲取指定位置
            console.log(sons[1]);
//              firstChild   獲取第一個
            console.log(father.firstChild);
//             lastChild   獲取最後一個
            console.log(father.lastChild);
        }

//      子父關係  parentNode
        function getEle5(){
            var son = document.getElementById("userid");
            console.log(son.parentNode)
        }
//       兄弟關係 nextSibling 下一個對象  
//previousSibling當前結點的前一個結點返回緊鄰當前元素之前的元素
        function getEle6(){
            var bro = document.getElementById("userid");
            console.log(bro.nextSibling.nextSibling.nextSibling.nextSibling.nextSibling.nextSibling);
            bro.previousSibling

        }

        function getField1(){
            var obj = document.getElementById("nickid");
            //console.log(obj.type);
            //將昵稱的樣式改為password
            //obj.type = "password"; 

            var objval = obj.getAttribute("name");
            console.log(objval);
            obj.setAttribute("abcd","5678");
            obj.removeAttribute("type");

//            可以獲取改變後的屬性
            console.log(obj.value)
//            只能獲取初始定義的屬性
            console.log(obj.getAttribute("value"));
        }

        //        1) 通過對象.innerText 獲取標簽內部的文本信息
        function getText1(){
            var myDiv = document.getElementById("myDiv");
            console.log(myDiv.innerText);
        }
//        2) 通過對象.innerHTML 獲取標簽內部的HTML代碼
        function getText2(){
            var myDiv = document.getElementById("myDiv");
            console.log(myDiv.innerHTML);
        }

//        添加文本
        function getText3(){
            var myDiv = document.getElementById("myDiv");
            myDiv.innerText = "<img src='1.jpg' />";
        }
//        添加代碼
        function getText4(){
            var myDiv = document.getElementById("myDiv");
            myDiv.innerHTML = "<img src='1.jpg' />";
        }




    </script>
</head>
<body>

<button onclick="getEle1();">點我測試1</button>
<button onclick="getEle2();">點我測試2</button>
<button onclick="getEle3();">點我測試3</button>
<button onclick="getEle4();">點我測試4</button>
<button onclick="getEle5();">點我測試5</button>
<button onclick="getEle6();">點我測試6</button>
<hr/>

<button onclick="getField1();">屬性測試1</button>
<hr/>
<button onclick="getText1();">文本測試1</button>
<button onclick="getText2();">文本測試2</button>
<button onclick="getText3();">文本測試3</button>
<button onclick="getText4();">文本測試4</button>

<hr/>
<form id="regForm">
    用戶名:<input id="userid" type="text" name="username"><br/>
    密碼:<input type="password" name="password"><br/>
    昵稱:<input id="nickid" type="text" name="nickname" value="大名鼎鼎" abcd="1234" ><br/>
    性別:男<input type="radio" name="gender" value="nan">&nbsp;&nbsp;
    女<input type="radio" name="gender" value="nv"><br/>
    愛好:狗<input type="checkbox" name="fav" value="dog"><input type="checkbox" name="fav" value="cat">
    羊駝<input type="checkbox" name="fav" value="yt"><br/>
    <input type="submit" value="註冊">
</form>
<div id="myDiv"><b>hello</b></div>
</body>

 

4.動態改變DOM結構 1)創建一個結點對象 document.createElement("標簽名")
<script type="application/javascript">
    function changeDom1(){
        var ipt=document.createElement("input");
    }
</script>
<button onclick="changeDom1();">創建結點對象</button>

 

2)(父結點)追加子結點對象 fatherNode.appendChild(子結點對象)
function changeDom2() {
    var father = document.getElementById("regForm");

    var ipt = document.createElement("input");
    ipt.type = "text";

    father.appendChild(ipt);
}
<button onclick="changeDom2();">追加子結點對象</button>

 

3)(父結點)在指定結點前添加子結點 fatherNode.insertBefore(新結點對象,參考結點對象)
function changeDom3() {
    var father = document.getElementById("regForm");
    var refChild = document.getElementById("brid");
    var newChild = document.createElement("input");
    newChild.type = "text";
    father.insertBefore(newChild, refChild);
}
<button onclick="changeDom3();">插入子結點對象</button>

 

4)(父結點)替換舊的子結點對象 fatherNode.replaceChild(新結點對象,舊結點對象)
function changeDom4() {
    var father = document.getElementById("regForm");
    var refChild = document.getElementById("brid");
    var newChild = document.createElement("input");
    newChild.type = "text";
    father.replaceChild(newChild, refChild);
}
<button onclick="changeDom4();">替換子結點對象</button>

 

5)(父結點)刪除舊子結點對象
function changeDom5() {
            var father = document.getElementById("regForm");
            var refChild = document.getElementById("nickid");
            father.removeChild(refChild);
        }
<button onclick="changeDom5();">刪除子結點對象</button>

 

5.動態改變元素的CSS樣式(不重要)
<style type="text/css">
        .addstyle{
            color: red;
            font-size: 72px;
            text-decoration: underline;
        }
    </style>
    <script type="application/javascript">

        /*
         5.動態改變元素的css樣式
         1)我們通過對象.style屬性操作對象的css樣式:樣式名稱中有“-”將“-”去掉,並將“-”後一個字母改為大寫來作為樣式的新名稱
         2)我們希望通過class為一個對象添加一個class樣式,添加屬性名是className,而並非class(class是js的關鍵字,並能作為屬性名存在)
         */
        function fontGreater(){
            var myDiv = document.getElementById("myDiv");
            console.log(myDiv);
            myDiv.style.fontSize = "36px";
            myDiv.style.fontFamily = "宋體";
        }

        function changeFont(){
            var myDiv = document.getElementById("myDiv");
            myDiv.className = "addstyle";
            //myDiv.setAttribute("class","addstyle");
        }
    </script>
</head>
<body>
<button onclick="fontGreater()">放大字體</button>
<button onclick="changeFont()">添加樣式</button>

<div id="myDiv" >你好世界!</div>
</body>
 
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 腳本如下: EXEC sp_addlinkedserver @server='XXX', --鏈接伺服器別名 @srvproduct='', @provider='SQLOLEDB', @datasrc='.' --要訪問的的資料庫所在的伺服器的ip GO EXEC sp_addlinkedsrvl ...
  • A/B測試本質上是一種線上實驗。本篇把業務中常見的概念與A/B測試專業術語進行對應,並額外介紹其他實用且重要的概念。 ...
  • Coprocessor簡介 (1)實現目的 (2)靈感來源 靈感來源於Bigtable的協處理器,包含如下特性: (3)提供介面 (4)應用範圍 Endpoint服務端實現 在傳統關係型資料庫裡面,可以隨時的對某列進行求和sum,但是目前HBase目前所提供的介面,直接求和是比較困難的,所以先編寫好 ...
  • [20190505]關於latch 一些統計信息.txt--//我在兩篇文章,提到一些latch的統計信息.鏈接如下:http://blog.itpub.net/267265/viewspace-2642329/ =>[20190423]簡單測試latch nowilling等待模式.txthttp ...
  • String 結構 結構:Key Value對 Value:可以是字元串、數字,也可以是二進位數組 限制:Value最大值為512MB String 常用命令 1.get key • 含義:獲取指定key的值 2.set key value • 含義:設置指定key的值 3.incr key • 含 ...
  • 關於MongoDB的用戶和角色許可權的梳理一直不太清晰,仔細閱讀了下官方文檔,並對此做個總結。 預設情況下,MongoDB實例啟動運行時是沒有啟用用戶訪問許可權控制的,也就是說,在實例本機伺服器上都可以隨意登錄實例進行各種操作,MongoDB不會對連接客戶端進行用戶驗證,可以想象這是非常危險的。為了強制 ...
  • EventBus是針對Android優化的發佈-訂閱事件匯流排,簡化了Android組件間的通信。EventBus以其簡單易懂、優雅、開銷小等優點而備受歡迎。 github 地址:https://github.com/greenrobot/EventBus 1. 使用 1.1 gradle中引入 1. ...
  • 版權聲明:本文為xing_star原創文章,轉載請註明出處! 本文同步自http://javaexception.com/archives/80 背景: 之前碰到了一個頁面展示問題,SearchView放在Toolbar裡面,展示在頁面頂部,發現進入這個頁面後,左上角是箭頭圖標(表示點擊返回),中間 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...