DOM 替换节点学习笔记

在 Web 开发中,我们经常需要对 DOM 树进行增删改查操作。其中,替换节点是一种比较常见的需求。本文将介绍如何使用 JavaScript 操作 DOM 替换节点。

replaceChild() 方法

DOM 提供了一个 replaceChild() 方法,可以用来将一个节点替换成另一个节点。该方法需要接收两个参数:

  1. 新节点
  2. 被替换的节点

示例代码:

javascriptCopy Code
// 获取需要被替换的节点 const oldNode = document.getElementById('oldNode'); // 创建新节点 const newNode = document.createElement('div'); newNode.innerText = '这是新节点'; // 替换节点 oldNode.parentNode.replaceChild(newNode, oldNode);

上述代码中,我们首先通过 getElementById() 方法获取需要被替换的节点 oldNode,然后创建一个新节点 newNode,并设置其内容为“这是新节点”。最后,使用父节点的 replaceChild() 方法将 newNode 替换为 oldNode

实例:无限下拉列表

在很多网站和应用中,我们会看到一些无限下拉列表,即用户滚动到底部时,会自动加载更多数据。下面是一个简单的无限下拉列表的实现示例:

htmlCopy Code
<!DOCTYPE html> <html> <head> <title>无限下拉列表</title> <script> let pageNum = 1; // 当前页码 const pageSize = 10; // 每页数据量 function loadMore() { // 发送请求获取更多数据 // ... const data = [...]; // 假设这里获取到了新数据 // 将新数据添加到列表中 const list = document.getElementById('list'); for (let i = 0; i < data.length; i++) { const item = document.createElement('li'); item.innerText = data[i]; list.appendChild(item); } pageNum++; // 更新页码 } window.addEventListener('scroll', function () { const scrollTop = document.documentElement.scrollTop; const scrollHeight = document.documentElement.scrollHeight; const clientHeight = document.documentElement.clientHeight; if (scrollTop + clientHeight >= scrollHeight) { loadMore(); } }); </script> </head> <body> <ul id="list"> <li>item 1</li> <li>item 2</li> <li>item 3</li> <!-- ... --> </ul> </body> </html>

该示例中,我们通过监听 window 对象的 scroll 事件,判断当前滚动位置是否已经到达页面底部。如果是,则调用 loadMore() 方法加载更多数据,然后将新数据添加到列表中。

需要注意的是,在实际应用中,我们往往需要在 loadMore() 方法中使用异步请求获取数据。并且,为了避免过多重复请求,我们还需要对请求进行节流或防抖等处理。