最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript中的DOM遍歷詳解

 更新時(shí)間:2023年09月24日 15:06:48   作者:托兒所夜十三  
文檔對象模型 (DOM) 表示 HTML 文檔的結(jié)構(gòu),導(dǎo)航或“遍歷”此結(jié)構(gòu)是 Web 開發(fā)的基本方面,使開發(fā)人員能夠在網(wǎng)頁上選擇、修改、刪除或添加內(nèi)容,本文深入研究了使用 JavaScript 進(jìn)行 DOM 遍歷的藝術(shù),提供了一個(gè)強(qiáng)大的工具包來處理各種遍歷場景

介紹

文檔對象模型 (DOM) 表示 HTML 文檔的結(jié)構(gòu)。導(dǎo)航或“遍歷”此結(jié)構(gòu)是 Web 開發(fā)的基本方面,使開發(fā)人員能夠在網(wǎng)頁上選擇、修改、刪除或添加內(nèi)容。這本綜合指南深入研究了使用 JavaScript 進(jìn)行 DOM 遍歷的藝術(shù),提供了一個(gè)強(qiáng)大的工具包來處理各種遍歷場景。

1. DOM基礎(chǔ)選擇器

讓我們回顧一下一些基本的 DOM 選擇器。

  • getElementById():返回對具有指定 ID 的第一個(gè)元素的引用。
const header = document.getElementById('header');
  • getElementsByClassName():返回具有給定類名的元素的實(shí)時(shí) HTMLCollection。
const buttons = document.getElementsByClassName('btn');
  • getElementsByTagName():返回具有給定標(biāo)簽名稱的元素的實(shí)時(shí) HTMLCollection。
const paragraphs = document.getElementsByTagName('p');
  • querySelector():返回與指定 CSS 選擇器匹配的第一個(gè)元素。
const mainImage = document.querySelector('.main-image');
  • querySelectorAll():返回一個(gè)靜態(tài) NodeList,表示與指定 CSS 選擇器匹配的元素。
const listItems = document.querySelectorAll('ul li');

2. 父母、子女和兄弟姐妹的關(guān)系

DOM 遍歷的核心是節(jié)點(diǎn)之間的關(guān)系。

2.1. 父節(jié)點(diǎn)

  • ParentNode:返回指定元素的父節(jié)點(diǎn)。
const parentOfButton = document.querySelector('.btn').parentNode;

2.2. 子節(jié)點(diǎn)

  • firstChild & lastChild:分別返回節(jié)點(diǎn)的第一個(gè)和最后一個(gè)子節(jié)點(diǎn)。
const firstChildOfDiv = document.querySelector('div').firstChild;
const lastChildOfDiv = document.querySelector('div').lastChild;
  • Children:返回元素子元素的 HTMLCollection(不包括文本和注釋節(jié)點(diǎn))。
const divChildren = document.querySelector('div').children;
  • firstElementChildlastElementChild是類似于firstChildlastChild的DOM屬性,但嚴(yán)格返回元素節(jié)點(diǎn)。
const firstElementChildOfDiv = document.querySelector('div').firstElementChild;

2.3. 兄弟節(jié)點(diǎn)

  • nextSibling & previousSibling:分別返回元素的下一個(gè)和上一個(gè)同級元素。
const nextToButton = document.querySelector('.btn').nextSibling;
const prevToButton = document.querySelector('.btn').previousSibling;
  • nextElementSiblingpreviousElementSibling是與nextSiblingpreviousSibling類似的DOM屬性,但嚴(yán)格用于元素節(jié)點(diǎn)。
const nextElementToButton = document.querySelector('.btn').nextElementSibling;

3. 遍歷方法

3.1. 節(jié)點(diǎn)迭代

  • childNodes:返回子節(jié)點(diǎn)的 NodeList。
const listNodes = document.querySelector('ul').childNodes;

3.2. 過濾元素

用于Array.prototype.filter根據(jù)條件過濾節(jié)點(diǎn)。

const listItems = document.querySelector('ul').children;
const redItems = [...listItems].filter(item => item.style.color === 'red');

4. DOM 遍歷事件

將事件偵聽器與遍歷方法相結(jié)合來創(chuàng)建交互式元素。

document.querySelector('.btn').addEventListener('click', function(e) {
  const nextElement = e.target.nextElementSibling;
  if (nextElement) {
    nextElement.style.display = 'none';
  }
});

5. 高級遍歷技術(shù)

5.1. 遞歸遍歷

遞歸遍歷整個(gè) DOM 樹。當(dāng)深度未知時(shí),此方法很有用:

function traverseDOM(node) {
  console.log(node);
  const children = node.children;
  for (let child of children) {
    traverseDOM(child);
  }
}
traverseDOM(document.body);

5.2. 向上遍歷DOM樹

在某些情況下,可能需要查找具有特定選擇器的父元素:

function findAncestor(el, selector) {
  while ((el = el.parentElement) && !el.matches(selector));
  return el;
}
const listItem = document.querySelector('li');
const containingDiv = findAncestor(listItem, 'div');

掌握 DOM 遍歷對于任何全棧或前端開發(fā)人員來說都是至關(guān)重要的。JavaScript 提供了大量的方法和屬性來導(dǎo)航 DOM 的復(fù)雜關(guān)系。

以上就是JavaScript中的DOM遍歷詳解的詳細(xì)內(nèi)容,更多關(guān)于JavaScript DOM遍歷的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 關(guān)于Promise基本方法的簡單實(shí)現(xiàn)

    關(guān)于Promise基本方法的簡單實(shí)現(xiàn)

    Promise大家一定都不陌生了,JavaScript異步流程從最初的Callback,到Promise,到Generator,再到目前使用最多的Async/Await,下面這篇文章主要給大家介紹了關(guān)于Promise基本方法的簡單實(shí)現(xiàn),需要的朋友可以參考下
    2022-02-02
  • JS解決回調(diào)地獄為什么需要Promise來優(yōu)化異步編程

    JS解決回調(diào)地獄為什么需要Promise來優(yōu)化異步編程

    這篇文章主要為大家介紹了JS解決回調(diào)地獄為什么需要Promise來優(yōu)化異步編程原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • 原生JavaScript編寫俄羅斯方塊

    原生JavaScript編寫俄羅斯方塊

    本文給大家分享的是使用原生javascript實(shí)現(xiàn)的俄羅斯方塊的代碼,還沒有很完善,這里放出來,算是拋磚引玉吧,希望小伙伴們能夠喜歡。
    2015-03-03
  • js判斷瀏覽器類型,版本的代碼(附多個(gè)實(shí)例代碼)

    js判斷瀏覽器類型,版本的代碼(附多個(gè)實(shí)例代碼)

    當(dāng)前世界上有很多種瀏覽器,除了我們熟知的IE, Firefox, Opera, Safari四大瀏覽器之外,世界上還有近百種瀏覽器,有時(shí)候我們需要判斷瀏覽器與版本方便后續(xù)的操作,一句話瀏覽器的兼容性太差了,缺少標(biāo)準(zhǔn)
    2014-05-05
  • javascript之對系統(tǒng)的toFixed()方法的修正

    javascript之對系統(tǒng)的toFixed()方法的修正

    javascript之對系統(tǒng)的toFixed()方法的修正...
    2007-05-05
  • JavaScript 拖拉縮放效果

    JavaScript 拖拉縮放效果

    拖拉縮放效果,實(shí)現(xiàn)通過鼠標(biāo)拖動(dòng)來調(diào)整層的面積(寬高)大小。例如選框效果。
    2008-12-12
  • js分頁顯示div的內(nèi)容

    js分頁顯示div的內(nèi)容

    對于div內(nèi)容過高的情況,我們可以用js控制div分頁
    2008-07-07
  • Async Validator 異步驗(yàn)證使用說明

    Async Validator 異步驗(yàn)證使用說明

    async-validator 是一個(gè)異步驗(yàn)證的庫,需要傳入要驗(yàn)證的數(shù)據(jù)和驗(yàn)證規(guī)則 ,下面通過本文給大家介紹Async Validator 異步驗(yàn)證使用說明,需要的的朋友參考下吧
    2017-07-07
  • 借用Google的Javascript API Loader來加速你的網(wǎng)站

    借用Google的Javascript API Loader來加速你的網(wǎng)站

    加速頁面加載速度有一個(gè)方法就是把CSS和JS文件放到另外一個(gè)單獨(dú)的服務(wù)器上,這樣在訪問量比較大的情況下可以分擔(dān)主服務(wù)器的壓力
    2009-01-01
  • 微信小程序支付功能完整流程記錄(前端)

    微信小程序支付功能完整流程記錄(前端)

    微信小程序的商戶系統(tǒng)一般是以接口的形式開發(fā)的,小程序通過調(diào)用與后端約定好的接口進(jìn)行參數(shù)的傳遞以及數(shù)據(jù)的接收,下面這篇文章主要給大家介紹了關(guān)于微信小程序支付功能(前端)的相關(guān)資料,需要的朋友可以參考下
    2023-02-02

最新評論

米泉市| 通道| 民县| 会同县| 资源县| 天水市| 通化市| 科技| 龙岩市| 讷河市| 冀州市| 玉龙| 莱芜市| 高淳县| 舟曲县| 东乌珠穆沁旗| 肥城市| 游戏| 聊城市| 隆子县| 长岛县| 桦南县| 新宁县| 沙坪坝区| 胶南市| 德庆县| 永靖县| 奎屯市| 驻马店市| 基隆市| 牙克石市| 汤原县| 都兰县| 抚宁县| 山阳县| 华阴市| 石屏县| 临猗县| 灵寿县| 石嘴山市| 平乐县|