從零開始學習前端JAVASCRIPT — 6、JavaScript基礎DOM

来源:https://www.cnblogs.com/witkeydu/archive/2018/01/25/8352894.html
-Advertisement-
Play Games

1:DOM(Document Object Model)的概念和作用 document對象是DOM核心對象:對html中的內容,屬性,樣式進行操作。 節點樹中節點之間的關係:父子,兄弟。 2:DOM常用屬性 title:返回或設置當前文檔的標題。 all:返回所有元素的集合。 forms:返回對文檔 ...


1:DOM(Document  Object  Model)的概念和作用

document對象是DOM核心對象:對html中的內容,屬性,樣式進行操作。

節點樹中節點之間的關係:父子,兄弟。


2:DOM常用屬性

title:返回或設置當前文檔的標題。

console.log(document.title);   //列印網頁標題—讀
document.title="hello world";  //更改網頁標題—寫

   all:返回所有元素的集合。

 console.log(document.all);//輸出網頁的所有元素

forms:返回對文檔中所有form對象的引用。 

console.log(document.forms['formone'])

通過集合來訪問相應的對象:

1.通過下標的形式。

2.通過name形式。


 3:DOM查詢方法

1.getElementById(id):返回擁有指定id的(第一個)對象的引用。

console.log(document.getElementById('box'))

2.getElementsByTagName(tagName):返回有指定標簽名的對象集合。

console.log(document.getElementsByTagName('div'));

註:上面兩個方法沒有相容性問題。

3.getElementsByName(name):返回帶有指定name指定名稱的對象的集合。有相容性問題。

console.log(document.getElementsByName('form1').length);

在IE9及其以下,如果該對象的標準屬性包含有name,(比如說input,在input中name是input的預設屬性,所以可以正常使用,但是在div中name並不是div的預設屬性,所以不能正常顯示),那麼可以正確的使用。否則不可以使用。在火狐中,該方法可以適用於任何情況。

結論: getElementsByName(name)主要是適用於表單。

4.write:輸出內容到頁面。(註:網頁載入完成後進行輸出,則覆蓋整個網頁,使用時需註意)

document.write('下雪啦!');

5.getElementsByClassName():返回帶有指定className指定名稱的對象的集合。有相容性問題,適用於火狐瀏覽器,在IE瀏覽器中不可用(IE8及以下不可用)。

console.log(document.getElementsByClassName('pink'))

封裝獲取className值的DOM節點的相容性的函數。

// 通過class名獲取元素集合
function byClassName(sClassName) {
	if(document.getElementsByClassName) {
		return document.getElementsByClassName(sClassName);
	} else {
		// 獲取所有的元素
		var allTags = document.getElementsByTagName('*');
		var result = [];
		for(var i = 0; i < allTags.length; i++) {
			if(allTags[i].className == sClassName) {
				result.push(allTags[i]);
			}
		}
		return result;
	}
}
console.log(byClassName('pink').length)

 4:操作內容

1.innerHTML:用來設置或獲取對象起始和結束標簽內(例如div框架,它只會獲取div裡面的內容,而不會獲取div)的內容(識別html標簽) 。

console.log(oBox.innerHTML);//輸出內部的標簽及文字

 

 oBox.innerHTML = '<i>我是測試數據</i>';  //文字傾斜,不顯示標簽

 2.innerText:用來設置或獲取對象起始和結束標簽內的內容 (只是獲取文字內容)(適用於IE,最新版火狐已支持)。

  textContent用來設置或獲取對象起始和結束標簽內的內容 (只是獲取文字內容)(適用於火狐,IE8及其以下不支持)。

console.log(oBox.innerText);  //只輸出文字

 

oBox.innerText = '<i>我是測試數據</i>'; //文字不傾斜,標簽當文字輸出

3.outerHTML  用來設置或獲取包括本對象在內的起始和結束標簽內(例如div框架,不僅會獲取div裡面的內容,也會獲取div自身的內容)的內容(識別html標簽) 。

4.outerText  用來設置或獲取包括本對象在內的起始和結束標簽內的內容(只是獲取文字內容)(火狐不支持)。

// 寫入的區別
 oBox.outerHTML = '<i>測試數據</i>';
 oBox.outerText = '<i>測試數據</i>';
//outerHTML 替換該標簽插入html標簽i文字發生傾斜
//outerText  替換該標簽插入文字不發生傾斜標簽當文字處理

 


 5:操作屬性

1.直接操作

      對象.屬性。   // 獲取屬性。某些屬性有相容性問題,例如name(如果不是標簽特有的屬性,在chrome/firfox訪問不到,在IE8及其以下瀏覽器能獲取的到)。

      對象.屬性=值  // 設置、添加屬性(屬性值)。

//通過屬性的方式操作讀寫
oBox.id = 'snow';
oBox.age = '24';
console.log(oBox.id);
console.log(oBox.age);

2.通過方法

      getAttribute(“屬性”)。  

console.log(oBox.getAttribute('id'));
console.log(oBox.getAttribute('age'));

     setAttribute(“屬性”,“值”)。 

Box.setAttribute('id', 'snow');
oBox.setAttribute('age', 24);

    removeAttribute(“屬性”)。    

// 刪除屬性
oBox.removeAttribute('color');

6:操作樣式

1.行內樣式

     對象.style.屬性       // 獲取樣式屬性

// 只能讀取行內樣式
console.log(oBox.style.width)
console.log(oBox.style.height)
console.log(oBox.style.color)
console.log(oBox.style.backgroundColor)

     對象.style.屬性=值  // 設置、添加樣式屬性。

// 只能設置行內樣式
oBox.style.width = '400px';
oBox.style.backgroundColor = 'blue';

     註: 遇到屬性是“-”鏈接的,要將“-”去掉,後面的單詞的首字母大寫,採用駝峰式命名的方法進行書寫。

   2.行內樣式和css層疊樣式通用的方式

對象.currentStyle.屬性                IE   用來獲得實際的樣式屬性。

getComputedStyle((對象,null).屬性)   火狐  用來獲得實際的樣式屬性。

註:只能獲取不能設置。

封裝獲取樣式通用方式:

// 獲取元素樣式值
function getStyle(obj, attr) {
	if(obj.currentStyle) {
		return obj.currentStyle[attr];
	} else {
		return getComputedStyle(obj, false)[attr];
	}
}

console.log(getStyle(oBox, 'width'));

 


 7:DOM增刪改

一:創建節點(註釋和文檔節點一般不需要創建)

    1:創建元素節點

        document.createElement("元素標簽名");

    2:創建屬性節點

        var oAttr = document.createAttribute(“屬性名”);(不常用)

           oAttr.value = "attr-name";

           oDiv.setAttributeNode(oAttr);

        對象.屬性=屬性值;(常用)

    3:創建文本節點

        對象.innerHTML = "";

        var oText = document.createTextNode(“文本”);  // 文本中的HTML標簽實體化

           oDiv.appendChild(oText);

二:追加到頁面當中

    父對象.appendChild(newNode)  // 插入到父對象最後。

    父對象.insertBefore(newNode, existsNode)   // 插入到什麼對象之前。

三:修改(替換)節點

    父對象.replaceChild(newNode,existsNode);  // 前面的替換後面的

四:刪除節點

    父對象.removeChild(oldNode);

     如果確定要刪除節點,最好也清空記憶體  對象=null;

五:表格操作

     table.tBodies[0].rows[0].cells[0].innerHTML;

     var oNewRow = table.insertRow(“行位置”);

   oNewRow.insertCell(“列位置”);

        // 創建LI標簽
	var oLi = document.createElement('li');
	oLi.innerHTML = '這是第' + Math.round(Math.random() * 1000 + 10) + '條新聞';

	// 將新的標簽追加到元素的末尾
	 oList.appendChild(oLi);

	// 將新的元素放到第一個位置
	oList.insertBefore(oLi, aLi[0]);

	// 替換節點
	oList.replaceChild(oLi, aLi[0]);

	// 刪除節點
	 oList.removeChild(aLi[0]);

	// 創建屬性節點
        oList.className = 'aaa';
	oList.sex = '男';

	var oHeight = document.createAttribute('height');
	oHeight .value = '180cm';
	oList.setAttributeNode(oHeight );

	// 創建文本節點
	var oText = document.createTextNode('新創建的文本節點');
	oList.appendChild(oText);

	// 表格的操作
	var oTable = document.getElementById('table');

	// 獲取tBody
	var tBody = oTable.tBodies[0];

	// 獲取tr
	 var oTr = tBody.rows[2];

	// 獲取td
	 var oTd = oTr.cells[1];


	// 讀取
	 console.log(oTd.innerHTML);

	// 修改
	oTd.innerHTML = 'second';

	// 添加新的一行
	// var oNewTr = tBody.insertRow(5);

	//  創建四列
	 var oNewTd = oNewTr.insertCell(0);
	 oNewTd.innerHTML = 5;
	 var oNewTd = oNewTr.insertCell(1);
	 oNewTd.innerHTML = '你猜五';
	 var oNewTd = oNewTr.insertCell(2);
	 oNewTd.innerHTML = 0;
	 var oNewTd = oNewTr.insertCell(3);
	 oNewTd.innerHTML = '女';

	// 刪除一行
	var oDeleteTr = tBody.rows[tBody.rows.length - 1];
	tBody.removeChild(oDeleteTr);                

  


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

-Advertisement-
Play Games
更多相關文章
  • 1、音頻 2、視頻 1、 2、AVPlayer 1、音頻 2、視頻 1、 2、AVPlayer 0)、寫在前面 AVPlayer 主要包含 AVPlayer、AVPlayerItem、AVPlayerLayer,分別對應,控制器C、模型M、視圖V。 1)、AVPlayer(控制器C) 2)、AVPl ...
  • 根據微信的官方文檔,小程式支持打開APP,專門研究了下這個API有什麼,官方文檔地址如下 https://mp.weixin.qq.com/debug/wxadoc/dev/component/button.html launchApp 打開APP,可以通過app-parameter屬性設定向APP ...
  • 說實話,極光推送接觸過好幾遍了,但是每次開發都是實現簡單的展示功能,最近接手的一款app要求只在後臺展示,還要實現點擊通知欄跳轉到相應的詳情界面,於是便以為很簡單的開始了,而且還很嗨的那種,以為自己沒問題了(當時自己用的iOS10以上的iPhone)。但是最後測試階段,出現各種問題,各種調試都不行, ...
  • 現象描述 當我們打開京東 app 進入首頁,如果當前是沒有網路的狀態,裡面的按鈕點擊是沒有反應的。只有當我們打開網路的情況下,點擊按鈕才能跳轉頁面,按照我們一般人寫代碼的邏輯應該是這個樣子: 上面這段代碼看似沒有任何問題,完全滿足京東的網路處理需求,就寫一個 if(有網) 跳轉到下一個頁面,沒網就不 ...
  • 1.$ ruby -v //查看當前的ruby版本,我的版本是ruby 2.0.0p648 小於2.2 所以在下麵的安裝cocoapods時會遇到問題 2. $ gem sources -l //查看當前ruby源,預設為 https://rubygems.org/ 因為防火牆的問題我們需要更換成國 ...
  • 一天了,都下著很冷很冷的雨啊...氣溫下降了很多喲,小伙伴們要照顧好自己( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ 今天還是沒有能堅持2個小時的學習時間,每天晚上拿出2個小時來學前端很難麽?不難啊,真的不難啊,為什麼做不到呢???總是被各種各樣的事情耽誤,自己沒有跳脫一種狀態的環境,明明知道應該來圖書館自習 ...
  • 為了把JQuery搞熟悉,看著菜鳥教程,一個一個例子打,邊看邊記,算是一晚上的一個小總結吧。加油,我很本但是我很勤奮啊。系統的瞭解它,就要花時間咯。 ...
  • 一、Vue介紹 二、使用VUE 1、引入vue.js文件 2、通過下麵的代碼展示用,創建一個Vue的實例,然後通過應用的id嵌入根元素,將數據放入一個對象data中,並且將表達式傳入div中{{msg}}(一定註意必須是雙大括弧) 三 、指令 指令:帶有首碼 v-,以表示它們是 Vue 提供的特殊特 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...