整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          一文解讀JavaScript中的文檔對象(DOM)

          家好,我是IT共享者,人稱皮皮。

          前言

          相信做網站對JavaScript再熟悉不過了,它是一門腳本語言,不同于Python的是,它是一門瀏覽器腳本語言,而Python則是服務器腳本語言,我們不光要會Python,還要會JavaScript,因為它對做網頁方面是有很大作用的。


          1.文檔對象(DOM)

          1).Document對象

          這是我們用的最普遍的一個文檔對象了,專門用來操作DOM節點時用。

          1)).獲取元素

          document.getElementById()           #通過id查找HTML元素
          document.getElementsByName()        #通過name查找HTML元素
          document.getElementsByTagName()     #通過標簽名查找HTML元素
          document.getElementsByClassName()   #通過類名查找HTML元素 
          document.querySelector(".h")        #第一個類名為 "h" 的元素
          document.querySelectorAll("div.no, div#h") #所有class為"no"或者id為"h"的div元素
          document.body          #獲取body標簽
          document.documentElement   #獲取html標簽

          2)).獲取網頁內容

          document.cookie        #網頁cookie
          document.domain        #文檔的域名
          document.lastModified  #文檔被最后修改的日期和時間
          document.referrer      #載入當前文檔的文檔的URL
          document.title         #當前文檔的標題
          document.URL           #當前文檔的URL
          document.doctype       #當前文檔的doctype
          document.baseURI       #當前文檔的絕對URI
          document.documentMode   #瀏覽器使用的模式
          document.documentURI    #文檔的URI
          document.implementation #DOM實現
          document.inputEncoding  #文檔的編碼(字符集)
          document.readyState     #文檔的(加載)狀態
          document.strictErrorChecking    #是否強制執行錯誤檢查

          3)).文檔寫入

          document.write('hello world')   向文檔寫入文本
          document.writeln('hello world') 向文檔寫入文本并換行

          4)).獲取集合

          document.all        #所有html元素
          document.anchors    #所有Anchor引用
          document.forms      #所有的表單引用
          document.images     #所有的圖片引用
          document.links      #所有的超鏈接引用
          document.scripts    #所有的腳本引用
          document.embeds     #所有的流媒體引用

          5)).獲取節點

          childNodes          #獲取子節點的集合 ,返回數組 ,并把換行和空格也當成是節點信息。
          children            #獲取子節點的集合 ,返回數組   
          firstChild          #獲取第一個子元素  并把換行和空格也當成是節點信息
          firstElementChild   #獲取第一個子節點
          lastChild           #獲取最后一個子節點 并把換行和空格也當成是節點信息
          lastElementChild    #獲取最后一個子節點
          parentNode          #獲取父節點
          parentElement       #獲取父節點(IE)
          offsetParent        #獲取所有父節點  對應的值是body下的所有節點信息
          previousSibling         #獲取上一個兄弟節點  匹配字符,包括換行和空格,而不是節點
          previousElementSibling  #獲取上一個兄弟節點  直接匹配節點
          nextSibling             #獲取下一個兄弟節點  匹配字符,包括換行和空格,而不是節點
          nextElementSibling      #獲取下一個兄弟節點  直接匹配節點
          ownerDocument           #元素的根節點

          這里我們獲取到了所有的Div元素,我們可以針對性的獲取一個ID下的Div的子元素以及它的兄弟和父,子元素,如下:

          6)).創建節點

          我們可以自定義節點并添加值,不過要將它添加到文檔中去,所以必須添加節點,一般和下方的增加節點配套使用。

          document.createElement(標簽)  #創建HTML元素
          document.createTextNode(文本) #給文檔添加文本
          document.createComment(文本)  #創建一個注釋節點
          document.createDocumentFragment() #創建文檔粉碎節點

          7)).增加節點

          appendChild(節點) #節點被添加到元素的末尾
          insertBefore(a,b) #a節點會插入b節點的前面

          8)).刪除節點

          removeChild(節點名)  #被移除的節點仍在文檔中,只是文檔中已沒有其位置了

          9)).替換節點

          replaceChild(插入的節點,被替換的節點)

          10)).復制節點

          a.cloneChild() #復制a節點,復制出來的節點作為返回值為true時,則a元素后代也一并復制。否則,僅復制a元素本身

          11)).節點屬性

          #節點類型 nodeType 有三種情況
          #1.元素節點  2.屬性節點  3.文本節點
          
          
          #節點名稱 nodeName 
          
          
          #節點值 nodeValue 
          #元素節點沒節點值,為null 
          #文本節點的節點值就是文本
          #屬性節點的節點值就是該屬性值
          
          
          #節點屬性獲取
          a.width
          a['width']
          a.gerAttribute(屬性名)  返回指定的屬性值
          a.gerAttributeNode(屬性名) 返回指定的屬性節點
          節點屬性設置
          a.width=400
          a['width']=400
          a.attributes['width']=400
          a.setAttribute('width',400) 添加指定的屬性
          a.setAttributeNode(b) 添加指定的屬性節點
          
          
          #節點屬性刪除
          a.removeChild(子節點)    從元素中移除子節點
          a.removeAttribute(屬性)  從元素中移除指定屬性
          a.removeAttributeNode(屬性) 移除指定的屬性節點,并返回被移除的節點
          
          
          a.id 獲取當前元素的id
          a.className  獲取當前元素的class
          a.classList  獲取當前元素的class列表
          
          
          a.accessKey='w'    設置或返回元素的快捷鍵
          a.namespaceURI     返回指定節點的命名空間的 URI
          a.dir              設置或返回元素的內容是否可編輯
          a.normalize()      合并元素中相鄰的文本節點,并移除空的文本節點
          a.tabIndex='3'     設置或返回元素的tab鍵控制次序
          a.tagName          返回元素的標簽名
          a.textContent      設置或返回節點及其子代的文本內容
          a.title            設置或返回元素的標題屬性
          a.item(num)        返回節點列表中位于指定下標的節點
          a.length           返回節點列表中的節點數

          12)).獲取元素文本

          a.innerHTML  獲取或者設置對象內的HTML
          a.innerText  獲取或者設置對象內的文本
          a.outerHTML  獲取或者設置對象外的HTML
          a.outerText  獲取或者設置對象外的文本
          a.value      獲取或者設置表單元素的值


          總結

          這篇文章主要介紹了JavaScript的文檔對象。下一篇文章,我們繼續介紹JavaScript,敬請期待!

          TML DOM (文檔對象模型)

          當網頁被加載時,瀏覽器會創建頁面的文檔對象模型(Document Object Model)。

          HTML DOM 定義了用于 HTML 的一系列標準的對象,以及訪問和處理 HTML 文檔的標準方法。通過 DOM,你可以訪問所有的 HTML 元素,連同它們所包含的文本和屬性。

          HTML DOM 模型被構造為對象的樹:


          查找 HTML 元素

          //通過 id 查找 HTML 元素
          var x=document.getElementById("intro");
          
          //通過標簽名查找 HTML 元素
          var x=document.getElementById("main");
          var y=x.getElementsByTagName("p");
          
          //通過類名找到 HTML 元素
          var x=document.getElementsByClassName("intro");

          HTML DOM 改變 HTML 內容

          //改變 HTML 輸出流
          document.write(Date());
          //絕對不要在文檔加載完成之后使用,用btn點擊事件執行 document.write()。這會覆蓋該文檔。
          
          //改變 HTML 內容
          document.getElementById(id).innerHTML=new HTML
          
          //改變 HTML 屬性
          document.getElementById(id).attribute=new value

          HTML DOM 改變 CSS

          //改變 HTML 樣式
          document.getElementById("p2").style.color="blue";
          document.getElementById("p2").style.fontFamily="Arial";
          document.getElementById("p2").style.fontSize="larger";
          
          <h1 id="id1">我的標題 1</h1>
          <button type="button" onclick="document.getElementById('id1').style.color='red'">
          點我!</button>

          HTML DOM 事件

          //對事件做出反應
          <h1 onclick="this.innerHTML='Ooops!'">點擊文本!</h1>
          
          <script>
          function changetext(id){
          	id.innerHTML="Ooops!";
          }
          </script>
          </head>
          <body>
          <h1 onclick="changetext(this)">點擊文本!</h1>
          </body>
          
          
          //HTML 事件屬性
          <body>
          <p>點擊按鈕執行 <em>displayDate()</em> 函數.</p>
          <button onclick="displayDate()">點我</button>
          <script>
          function displayDate()
          {
          	document.getElementById("demo").innerHTML=Date();
          }
          </script>
          <p id="demo"></p>
          </body>
          
          
          //使用 HTML DOM 來分配事件
          document.getElementById("myBtn").onclick=function(){displayDate()};
          
          //onchange 事件
          <script>
          function myFunction(){
          	var x=document.getElementById("fname");
          	x.value=x.value.toUpperCase();
          }
          </script>
          </head>
          <body>
          輸入你的名字: <input type="text" id="fname" onchange="myFunction()">
          <p>當你離開輸入框后,函數將被觸發,將小寫字母轉為大寫字母。</p>
          </body>

          HTML DOM 事件監聽器

          //addEventListener() 方法
          <body>
          <p>該實例使用 addEventListener() 方法在按鈕中添加點擊事件。 </p>
          <button id="myBtn">點我</button>
          <p id="demo"></p>
          <script>
          document.getElementById("myBtn").addEventListener("click", displayDate);
          function displayDate() {
              document.getElementById("demo").innerHTML = Date();
          }
          </script>
          </body>
          
          //向原元素添加事件句柄
          <body>
          <p>該實例使用 addEventListener() 方法在按鈕中添加點擊事件。 </p>
          <button id="myBtn">點我</button>
          <script>
          document.getElementById("myBtn").addEventListener("click", function(){
              alert("Hello World!");
          });
          </script>
          
          //向同一個元素中添加多個事件句柄
          <body>
          <p>該實例使用 addEventListener() 方法向同個按鈕中添加兩個點擊事件。</p>
          <button id="myBtn">點我</button>
          <script>
          var x = document.getElementById("myBtn");
          x.addEventListener("click", myFunction);
          x.addEventListener("click", someOtherFunction);
          function myFunction() {
              alert ("Hello World!")
          }
          function someOtherFunction() {
              alert ("函數已執行!")
          }
          </script>
          </body>

          HTML DOM 元素

          在文檔對象模型 (DOM) 中,每個節點都是一個對象。DOM 節點有三個重要的屬性,分別是:

          1. nodeName : 節點的名稱
          2. nodeValue :節點的值
          3. nodeType :節點的類型

          創建新的 HTML 元素

          <body>
          <div id="div1">
          <p id="p1">這是一個段落。</p>
          <p id="p2">這是另一個段落。</p>
          </div>
          <script>
          var para=document.createElement("p");
          var node=document.createTextNode("這是一個新段落。");
          para.appendChild(node);
          var element=document.getElementById("div1");
          element.appendChild(para);
          </script>

          刪除已有的 HTML 元素

          <body>
          <div id="div1">
          	<p id="p1">這是一個段落。</p>
          	<p id="p2">這是另一個段落。</p>
          </div>
          <script>
          var parent=document.getElementById("div1");
          var child=document.getElementById("p1");
          parent.removeChild(child);
          </script>
          </body>
          


          以上內容整理于網絡,如有侵權請聯系刪除。

          TML 音頻/視頻 DOM 參考手冊

          HTML5 DOM 為 <audio> 和 <video> 元素提供了方法、屬性和事件。

          這些方法、屬性和事件允許您使用 JavaScript 來操作 <audio> 和 <video> 元素。

          HTML 音頻/視頻 方法

          方法描述
          addTextTrack()向音頻/視頻添加新的文本軌道。
          canPlayType()檢測瀏覽器是否能播放指定的音頻/視頻類型。
          load()重新加載音頻/視頻元素。
          play()開始播放音頻/視頻。
          pause()暫停當前播放的音頻/視頻。

          HTML 音頻/視頻屬性

          屬性描述
          audioTracks返回表示可用音頻軌道的 AudioTrackList 對象。
          autoplay設置或返回是否在加載完成后隨即播放音頻/視頻。
          buffered返回表示音頻/視頻已緩沖部分的 TimeRanges 對象。
          controller返回表示音頻/視頻當前媒體控制器的 MediaController 對象。
          controls設置或返回音頻/視頻是否顯示控件(比如播放/暫停等)。
          crossOrigin設置或返回音頻/視頻的 CORS 設置。
          currentSrc返回當前音頻/視頻的 URL。
          currentTime設置或返回音頻/視頻中的當前播放位置(以秒計)。
          defaultMuted設置或返回音頻/視頻默認是否靜音。
          defaultPlaybackRate設置或返回音頻/視頻的默認播放速度。
          duration返回當前音頻/視頻的長度(以秒計)。
          ended返回音頻/視頻的播放是否已結束。
          error返回表示音頻/視頻錯誤狀態的 MediaError 對象。
          loop設置或返回音頻/視頻是否應在結束時重新播放。
          mediaGroup設置或返回音頻/視頻所屬的組合(用于連接多個音頻/視頻元素)。
          muted設置或返回音頻/視頻是否靜音。
          networkState返回音頻/視頻的當前網絡狀態。
          paused設置或返回音頻/視頻是否暫停。
          playbackRate設置或返回音頻/視頻播放的速度。
          played返回表示音頻/視頻已播放部分的 TimeRanges 對象。
          preload設置或返回音頻/視頻是否應該在頁面加載后進行加載。
          readyState返回音頻/視頻當前的就緒狀態。
          seekable返回表示音頻/視頻可尋址部分的 TimeRanges 對象。
          seeking返回用戶是否正在音頻/視頻中進行查找。
          src設置或返回音頻/視頻元素的當前來源。
          startDate返回表示當前時間偏移的 Date 對象。
          textTracks返回表示可用文本軌道的 TextTrackList 對象。
          videoTracks返回表示可用視頻軌道的 VideoTrackList 對象。
          volume設置或返回音頻/視頻的音量。

          HTML 音頻/視頻事件

          事件描述
          abort當音頻/視頻的加載已放棄時觸發。
          canplay當瀏覽器可以開始播放音頻/視頻時觸發。
          canplaythrough當瀏覽器可在不因緩沖而停頓的情況下進行播放時觸發。
          durationchange當音頻/視頻的時長已更改時觸發。
          emptied當目前的播放列表為空時觸發。
          ended當目前的播放列表已結束時觸發。
          error當在音頻/視頻加載期間發生錯誤時觸發。
          loadeddata當瀏覽器已加載音頻/視頻的當前幀時觸發。
          loadedmetadata當瀏覽器已加載音頻/視頻的元數據時觸發。
          loadstart當瀏覽器開始查找音頻/視頻時觸發。
          pause當音頻/視頻已暫停時觸發。
          play當音頻/視頻已開始或不再暫停時觸發。
          playing當音頻/視頻在因緩沖而暫停或停止后已就緒時觸發。
          progress當瀏覽器正在下載音頻/視頻時觸發。
          ratechange當音頻/視頻的播放速度已更改時觸發。
          seeked當用戶已移動/跳躍到音頻/視頻中的新位置時觸發。
          seeking當用戶開始移動/跳躍到音頻/視頻中的新位置時觸發。
          stalled當瀏覽器嘗試獲取媒體數據,但數據不可用時觸發。
          suspend當瀏覽器刻意不獲取媒體數據時觸發。
          timeupdate當目前的播放位置已更改時觸發。
          volumechange當音量已更改時觸發。
          waiting當視頻由于需要緩沖下一幀而停止時觸發。

          如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!


          主站蜘蛛池模板: 日韩一区二区久久久久久| 午夜精品一区二区三区免费视频| 亚洲熟妇av一区二区三区| 日韩一本之道一区中文字幕| 日韩内射美女人妻一区二区三区| 亚洲一区二区免费视频| 国产福利在线观看一区二区| 国产精品一区二区av不卡| 亚洲av无码成人影院一区| 一区二区国产精品| 精品视频一区二区三区四区| 午夜精品一区二区三区在线视 | 51视频国产精品一区二区| 四虎永久在线精品免费一区二区| 精品国产aⅴ无码一区二区| 中文字幕一区二区日产乱码| 精品一区二区三区AV天堂| 中文字幕日韩丝袜一区| 亚洲AV综合色一区二区三区| 国产亚洲情侣一区二区无| 国产第一区二区三区在线观看| 蜜臀AV在线播放一区二区三区| 国产在线精品一区二区在线观看| 色欲AV无码一区二区三区| 国产怡春院无码一区二区 | 亚洲欧美日韩中文字幕一区二区三区 | 久久无码AV一区二区三区| 国产熟女一区二区三区四区五区 | 中文字幕一区二区视频| 本免费AV无码专区一区| 久久精品国产一区二区三区不卡| 国模一区二区三区| 亚洲AV香蕉一区区二区三区| 福利片福利一区二区三区| 亚洲日韩中文字幕无码一区| 亚洲爆乳无码一区二区三区| 丰满爆乳无码一区二区三区| 一区二区免费视频| 亚洲丶国产丶欧美一区二区三区 | 亚洲一区二区三区无码影院| 国产精品一区二区在线观看|