TML DOM 節點
在 HTML DOM (Document Object Model) 中, 每個東西都是 節點 :
文檔本身就是一個文檔對象
所有 HTML 元素都是元素節點
所有 HTML 屬性都是屬性節點
插入到 HTML 元素文本是文本節點
注釋是注釋節點
元素對象
在 HTML DOM 中, 元素對象代表著一個 HTML 元素。
元素對象 的 子節點可以是, 可以是元素節點,文本節點,注釋節點。
NodeList 對象 代表了節點列表,類似于 HTML元素的子節點集合。
元素可以有屬性。屬性屬于屬性節點。
瀏覽器支持
所有主流瀏覽器都支持 元素對象 和 NodeList 對象。.
屬性和方法
以上屬性和方法可適用于所有 HTML 元素:
屬性 / 方法 | 描述 |
---|---|
element.accessKey | 設置或返回accesskey一個元素 |
element.addEventListener() | 向指定元素添加事件句柄 |
element.appendChild() | 為元素添加一個新的子元素 |
element.attributes | 返回一個元素的屬性數組 |
element.childNodes | 返回元素的一個子節點的數組 |
element.classlist | 返回元素的類名,作為 DOMTokenList 對象。 |
element.className | 設置或返回元素的class屬性 |
element.clientHeight | 在頁面上返回內容的可視高度(不包括邊框,邊距或滾動條) |
element.clientWidth | 在頁面上返回內容的可視寬度(不包括邊框,邊距或滾動條) |
element.cloneNode() | 克隆某個元素 |
element.compareDocumentPosition() | 比較兩個元素的文檔位置。 |
element.contentEditable | 設置或返回元素的內容是否可編輯 |
element.dir | 設置或返回一個元素中的文本方向 |
element.firstChild | 返回元素的第一個子節點 |
element.focus() | 設置文檔或元素獲取焦點 |
element.getAttribute() | 返回指定元素的屬性值 |
element.getAttributeNode() | 返回指定屬性節點 |
element.getElementsByTagName() | 返回指定標簽名的所有子元素集合。 |
element. getElementsByClassName() | 返回文檔中所有指定類名的元素集合,作為 NodeList 對象。 |
element.getFeature() | 返回指定特征的執行APIs對象。 |
element.getUserData() | 返回一個元素中關聯鍵值的對象。 |
element.hasAttribute() | 如果元素中存在指定的屬性返回 true,否則返回false。 |
element.hasAttributes() | 如果元素有任何屬性返回true,否則返回false。 |
element.hasChildNodes() | 返回一個元素是否具有任何子元素 |
element.hasFocus() | 返回布爾值,檢測文檔或元素是否獲取焦點 |
element.id | 設置或者返回元素的 id。 |
element.innerHTML | 設置或者返回元素的內容。 |
element.insertBefore() | 現有的子元素之前插入一個新的子元素 |
element.isContentEditable | 如果元素內容可編輯返回 true,否則返回false |
element.isDefaultNamespace() | 如果指定了namespaceURI 返回 true,否則返回 false。 |
element.isEqualNode() | 檢查兩個元素是否相等 |
element.isSameNode() | 檢查兩個元素所有有相同節點。 |
element.isSupported() | 如果在元素中支持指定特征返回 true。 |
element.lang | 設置或者返回一個元素的語言。 |
element.lastChild | 返回的最后一個子元素 |
element.namespaceURI | 返回命名空間的 URI。 |
element.nextSibling | 返回該元素緊跟的一個節點 |
element.nodeName | 返回元素的標記名(大寫) |
element.nodeType | 返回元素的節點類型 |
element.nodeValue | 返回元素的節點值 |
element.normalize() | 使得此成為一個"normal"的形式,其中只有結構(如元素,注釋,處理指令,CDATA節和實體引用)隔開Text節點,即元素(包括屬性)下面的所有文本節點,既沒有相鄰的文本節點也沒有空的文本節點 |
element.offsetHeight | 返回,任何一個元素的高度包括邊框和填充,但不是邊距 |
element.offsetWidth | 返回元素的寬度,包括邊框和填充,但不是邊距 |
element.offsetLeft | 返回當前元素的相對水平偏移位置的偏移容器 |
element.offsetParent | 返回元素的偏移容器 |
element.offsetTop | 返回當前元素的相對垂直偏移位置的偏移容器 |
element.ownerDocument | 返回元素的根元素(文檔對象) |
element.parentNode | 返回元素的父節點 |
element.previousSibling | 返回某個元素緊接之前元素 |
element.querySelector() | 返回匹配指定 CSS 選擇器元素的第一個子元素 |
document.querySelectorAll() | 返回匹配指定 CSS 選擇器元素的所有子元素節點列表 |
element.removeAttribute() | 從元素中刪除指定的屬性 |
element.removeAttributeNode() | 刪除指定屬性節點并返回移除后的節點。 |
element.removeChild() | 刪除一個子元素 |
element.removeEventListener() | 移除由 addEventListener() 方法添加的事件句柄 |
element.replaceChild() | 替換一個子元素 |
element.scrollHeight | 返回整個元素的高度(包括帶滾動條的隱蔽的地方) |
element.scrollLeft | 返回當前視圖中的實際元素的左邊緣和左邊緣之間的距離 |
element.scrollTop | 返回當前視圖中的實際元素的頂部邊緣和頂部邊緣之間的距離 |
element.scrollWidth | 返回元素的整個寬度(包括帶滾動條的隱蔽的地方) |
element.setAttribute() | 設置或者改變指定屬性并指定值。 |
element.setAttributeNode() | 設置或者改變指定屬性節點。 |
element.setIdAttribute() | |
element.setIdAttributeNode() | |
element.setUserData() | 在元素中為指定鍵值關聯對象。 |
element.style | 設置或返回元素的樣式屬性 |
element.tabIndex | 設置或返回元素的標簽順序。 |
element.tagName | 作為一個字符串返回某個元素的標記名(大寫) |
element.textContent | 設置或返回一個節點和它的文本內容 |
element.title | 設置或返回元素的title屬性 |
element.toString() | 一個元素轉換成字符串 |
nodelist.item() | 返回某個元素基于文檔樹的索引 |
nodelist.length | 返回節點列表的節點數目。 |
HTML DOM 節點
在 HTML DOM (Document Object Model) 中, 每個東西都是 節點 :
文檔本身就是一個文檔對象
所有 HTML 元素都是元素節點
所有 HTML 屬性都是屬性節點
插入到 HTML 元素文本是文本節點
注釋是注釋節點
元素對象
在 HTML DOM 中, 元素對象代表著一個 HTML 元素。
元素對象 的 子節點可以是, 可以是元素節點,文本節點,注釋節點。
NodeList 對象 代表了節點列表,類似于 HTML元素的子節點集合。
元素可以有屬性。屬性屬于屬性節點(查看下一節)。
瀏覽器支持
所有主流瀏覽器都支持 元素對象 和 NodeList 對象。.
屬性和方法
以上屬性和方法可適用于所有 HTML 元素:
屬性 / 方法 | 描述 |
---|---|
element.accessKey | 設置或返回accesskey一個元素 |
element.addEventListener() | 向指定元素添加事件句柄 |
element.appendChild() | 為元素添加一個新的子元素 |
element.attributes | 返回一個元素的屬性數組 |
element.childNodes | 返回元素的一個子節點的數組 |
element.classlist | 返回元素的類名,作為 DOMTokenList 對象。 |
element.className | 設置或返回元素的class屬性 |
element.clientHeight | 在頁面上返回內容的可視高度(不包括邊框,邊距或滾動條) |
element.clientWidth | 在頁面上返回內容的可視寬度(不包括邊框,邊距或滾動條) |
element.cloneNode() | 克隆某個元素 |
element.compareDocumentPosition() | 比較兩個元素的文檔位置。 |
element.contentEditable | 設置或返回元素的內容是否可編輯 |
element.dir | 設置或返回一個元素中的文本方向 |
element.firstChild | 返回元素的第一個子節點 |
element.focus() | 設置文檔或元素獲取焦點 |
element.getAttribute() | 返回指定元素的屬性值 |
element.getAttributeNode() | 返回指定屬性節點 |
element.getElementsByTagName() | 返回指定標簽名的所有子元素集合。 |
element. getElementsByClassName() | 返回文檔中所有指定類名的元素集合,作為 NodeList 對象。 |
element.getFeature() | 返回指定特征的執行APIs對象。 |
element.getUserData() | 返回一個元素中關聯鍵值的對象。 |
element.hasAttribute() | 如果元素中存在指定的屬性返回 true,否則返回false。 |
element.hasAttributes() | 如果元素有任何屬性返回true,否則返回false。 |
element.hasChildNodes() | 返回一個元素是否具有任何子元素 |
element.hasfocus() | 返回布爾值,檢測文檔或元素是否獲取焦點 |
element.id | 設置或者返回元素的 id。 |
element.innerHTML | 設置或者返回元素的內容。 |
element.insertBefore() | 現有的子元素之前插入一個新的子元素 |
element.isContentEditable | 如果元素內容可編輯返回 true,否則返回false |
element.isDefaultNamespace() | 如果指定了namespaceURI 返回 true,否則返回 false。 |
element.isEqualNode() | 檢查兩個元素是否相等 |
element.isSameNode() | 檢查兩個元素所有有相同節點。 |
element.isSupported() | 如果在元素中支持指定特征返回 true。 |
element.lang | 設置或者返回一個元素的語言。 |
element.lastChild | 返回的最后一個子元素 |
element.namespaceURI | 返回命名空間的 URI。 |
element.nextSibling | 返回該元素緊跟的一個元素 |
element.nodeName | 返回元素的標記名(大寫) |
element.nodeType | 返回元素的節點類型 |
element.nodeValue | 返回元素的節點值 |
element.normalize() | 使得此成為一個"normal"的形式,其中只有結構(如元素,注釋,處理指令,CDATA節和實體引用)隔開Text節點,即元素(包括屬性)下面的所有文本節點,既沒有相鄰的文本節點也沒有空的文本節點 |
element.offsetHeight | 返回,任何一個元素的高度包括邊框和填充,但不是邊距 |
element.offsetWidth | 返回元素的寬度,包括邊框和填充,但不是邊距 |
element.offsetLeft | 返回當前元素的相對水平偏移位置的偏移容器 |
element.offsetParent | 返回元素的偏移容器 |
element.offsetTop | 返回當前元素的相對垂直偏移位置的偏移容器 |
element.ownerDocument | 返回元素的根元素(文檔對象) |
element.parentNode | 返回元素的父節點 |
element.previousSibling | 返回某個元素緊接之前元素 |
element.querySelector() | 返回匹配指定 CSS 選擇器元素的第一個子元素 |
document.querySelectorAll() | 返回匹配指定 CSS 選擇器元素的所有子元素節點列表 |
element.removeAttribute() | 從元素中刪除指定的屬性 |
element.removeAttributeNode() | 刪除指定屬性節點并返回移除后的節點。 |
element.removeChild() | 刪除一個子元素 |
element.removeEventListener() | 移除由 addEventListener() 方法添加的事件句柄 |
element.replaceChild() | 替換一個子元素 |
element.scrollHeight | 返回整個元素的高度(包括帶滾動條的隱蔽的地方) |
element.scrollLeft | 返回當前視圖中的實際元素的左邊緣和左邊緣之間的距離 |
element.scrollTop | 返回當前視圖中的實際元素的頂部邊緣和頂部邊緣之間的距離 |
element.scrollWidth | 返回元素的整個寬度(包括帶滾動條的隱蔽的地方) |
element.setAttribute() | 設置或者改變指定屬性并指定值。 |
element.setAttributeNode() | 設置或者改變指定屬性節點。 |
element.setIdAttribute() | |
element.setIdAttributeNode() | |
element.setUserData() | 在元素中為指定鍵值關聯對象。 |
element.style | 設置或返回元素的樣式屬性 |
element.tabIndex | 設置或返回元素的標簽順序。 |
element.tagName | 作為一個字符串返回某個元素的標記名(大寫) |
element.textContent | 設置或返回一個節點和它的文本內容 |
element.title | 設置或返回元素的title屬性 |
element.toString() | 一個元素轉換成字符串 |
nodelist.item() | 返回某個元素基于文檔樹的索引 |
nodelist.length | 返回節點列表的節點數目。 |
如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!
avaScript 的 Rest 和 Spread 操作符自 ES6 引入以來,大大改變了開發者處理數組和對象的方式。這些操作符提供了更簡潔、更易讀的語法,使代碼更易于理解和維護。本文將介紹如何有效地使用 Rest 和 Spread 操作符,并通過示例進行說明。
Rest 操作符(...)允許你將多個元素收集到一個數組或對象中,通常用于函數參數中,將參數列表轉換為數組。而 Spread 操作符(...)則用于將數組或對象展開為單個元素,這在復制、合并或傳遞數組和對象時特別有用。
理解并掌握這些操作符可以大大提升你的 JavaScript 編碼水平,使代碼更加簡潔和富有表現力。
函數參數處理
Rest 操作符在函數定義中非常有用,可以處理不定數量的參數:
function multiply(...numbers) {
return numbers.reduce((product, number) => product * number, 1);
}
console.log(multiply(2, 3, 4)); // 輸出: 24
在這個例子中,multiply 函數接受任意數量的參數并進行相乘。Rest 操作符將所有參數收集到 numbers 數組中,使得可以輕松應用 reduce 等數組方法。
數組解構
Rest 操作符還可以在數組解構中使用,將剩余元素收集到一個新數組中:
const [head, ...tail] = ['a', 'b', 'c', 'd'];
console.log(head); // 輸出: 'a'
console.log(tail); // 輸出: ['b', 'c', 'd']
在這個例子中,數組的第一個元素被賦值給 head,其余元素則被收集到 tail 數組中。
數組合并
使用 Spread 操作符,數組合并變得非常簡單:
const fruits = ['apple', 'banana'];
const vegetables = ['carrot', 'potato'];
const food = [...fruits, ...vegetables];
console.log(food); // 輸出: ['apple', 'banana', 'carrot', 'potato']
在這個例子中,Spread 操作符將 fruits 和 vegetables 展開為單個元素并合并到 food 數組中。
數組復制
創建數組副本同樣很方便:
const numbers = [1, 2, 3];
const numbersCopy = [...numbers];
console.log(numbersCopy); // 輸出: [1, 2, 3]
這樣創建了一個包含與 numbers 數組相同元素的新數組 numbersCopy,修改 numbersCopy 不會影響 numbers。
對象合并
Spread 操作符還可以用于對象的合并:
const person = { name: 'Alice', age: 25 };
const job = { title: 'developer', company: 'Tech Co.' };
const employee = { ...person, ...job };
console.log(employee); // 輸出: { name: 'Alice', age: 25, title: 'developer', company: 'Tech Co.' }
在這個例子中,person 和 job 被合并到 employee 對象中,形成一個新的對象。
對象解構中的 Rest 操作符
Rest 操作符可以在對象解構中使用,收集剩余的屬性:
const { title, ...details } = { title: 'Book', author: 'John Doe', year: 2021 };
console.log(title); // 輸出: 'Book'
console.log(details); // 輸出: { author: 'John Doe', year: 2021 }
這個例子展示了如何提取特定屬性(title),同時將剩余屬性收集到 details 對象中。
Spread 操作符用于函數參數
在調用接受多個參數的函數時,Spread 操作符可以簡化傳遞數組元素作為參數:
function concatenate(str1, str2, str3) {
return str1 + str2 + str3;
}
const words = ['Hello', ' ', 'World!'];
console.log(concatenate(...words)); // 輸出: 'Hello World!'
通過展開 words 數組,每個元素作為獨立參數傳遞給 concatenate 函數。
JavaScript 中的 Rest 和 Spread 操作符是強大的工具,可以極大地增強代碼的靈活性和可讀性。不論是處理數組、對象還是函數參數,這些操作符都能提供優雅的解決方案。通過掌握這些操作符,你可以編寫更簡潔、高效的代碼,提升整體開發體驗。
理解并有效使用 Rest 和 Spread 操作符,不僅可以簡化當前項目,還能為未來的挑戰做好準備,使你的 JavaScript 代碼更易維護和表達。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。