解锁 JavaScript DOM:节点操作的核心方法与最佳实践

引言

在当今动态化的 Web 世界中,用户早已不满足于静态的网页展示,而是期待流畅的交互体验------点击按钮弹出菜单、滚动页面加载数据、实时搜索过滤内容......这些功能的背后,都离不开 ​JavaScript DOM(文档对象模型)操作

DOM 是浏览器将 HTML 文档解析成的树状结构,而 JavaScript 则赋予我们"操控这棵树"的能力。无论是动态更新内容、响应用户事件,还是构建复杂的单页应用(SPA),​DOM 节点操作都是前端工程师的核心技能之一。

一、节点操作

如果把网页比作一座房子,那么DOM节点就是搭建这座房子的"乐高积木"。在浏览器渲染网页时,它会将HTML文档解析成一个由各种节点组成的树状结构,这就是我们所说的文档对象模型(DOM)。

  1. 文档节点(Document Node):树的根节点,代表整个HTML文档。
  2. 元素节点(Element Node):代表HTML元素,例如<div>、<p>、<a>等。
  3. 属性节点(Attribute Node):代表HTML元素的属性,例如id、class、href等。
  4. 文本节点(Text Node):代表HTML元素中的文本内容。
  5. 注释节点(CommentNodes):代表注释

二、获取dom

2.1 childNodes

元素的子节点,包括元素节点和文本节点等。

示例:

html 复制代码
<body>
  <div class="father">
    <div class="child1"></div>
    <div class="child2"></div>
    <div class="child3"></div>
    <div class="child4"></div>
    <div class="child5"></div>
  </div>

  <script>
    var father = document.querySelector('.father');
    console.log(father.childNodes); 
    
  </script>
</body>

在控制台输出:

因为div的代码间存在回车空格,所以会出现六个text文本节点,删掉回车就不存在文本节点。

2.2 children

获取所有子元素节点(只包括元素节点)。

示例:

html 复制代码
<body>
  <div class="father">
    <div class="child1">one</div>
    <div class="child2">two</div>
    <div class="child3">three</div>
    <div class="child4">four</div>
    <div class="child5">five</div>
  </div>

  <script>
    var father = document.querySelector('.father');
    console.log(father.children); 
    var children = father.children;
    console.log(children[2]);
  </script>

在控制台输出:

2.3 parentElement

获取最近的父元素节点。

示例:

html 复制代码
<body>
  <div class="father">
    <div class="child1">one</div>
    <div class="child2">two</div>
    <div class="child3">three</div>
    <div class="haha"></div>
    <div class="child4">four</div>
    <div class="child5">five</div>
  </div>
  <script>
    var haha = document.querySelector('.haha');
    console.log(haha.parentElement);
    console.log(haha.parentElement.children[0]);
  </script>
</body>

在控制台输出:

可以通过父元素找到其任意一个子元素。

2.4 firstElementChild

获取第一个子元素节点。

示例:

javascript 复制代码
var father = document.querySelector('.father');
console.log(father.firstElementChild);

在控制台输出:

2.5 lastElementChild

获取最后一个子元素节点

示例:

javascript 复制代码
var father = document.querySelector('.father');
console.log(father.lastElementChild);

在控制台输出:

2.6 nextElementSibling

获取下一个兄弟元素。

示例:

javascript 复制代码
 var haha = document.querySelector('.haha');
    console.log(haha.nextElementSibling);

在控制台输出:

2.6 previousElementSibling

获取上一个兄弟元素。

示例:

javascript 复制代码
var haha = document.querySelector('.haha');
    console.log(haha.previousElementSibling);

在控制台输出:

三、dom的操作

在网页开发中,​DOM节点的创建与添加是实现动态交互的基础。

3.1 创建dom

createElement()

形式: document.createElement("tagName")

3.2 添加dom

appendChild()

在目标元素内部的最后添加一个元素。

形式: element.appendChild(node)

示例:

html 复制代码
<body>
  <div class="father">
    <div class="child1">one</div>
    <div class="child2">two</div>
    <div class="child3">three</div>
    <div class="haha"></div>
    <div class="child4">four</div>
    <div class="child5">five</div>
  </div>

  <div class="add" onclick="add()">给父视图添加一个子视图</div>
    <script>
 function add(){
      //创建元素节点 替代旧的innerHTML
      var child = document.createElement('div');
      child.innerText = '我是新创建的';
      //添加节点
      father.appendChild(child);
    }
    
  </script>
</body>

在前端显示:

◾prepend()

在目标元素内部的最前添加一个元素。

形式: element.prepend(node)

示例:

html 复制代码
<body>
  <div class="father">
    <div class="child1">one</div>
    <div class="child2">two</div>
    <div class="child3">three</div>
    <div class="haha"></div>
    <div class="child4">four</div>
    <div class="child5">five</div>
  </div>

  <div class="add" onclick="add()">给父视图添加一个子视图</div>
    <script>
 function add(){
      //创建元素节点 替代旧的innerHTML
      var child = document.createElement('div');
      child.innerText = '我是新创建的';
      //添加节点
      father.prepend(child);
    }
    
  </script>
</body>

在前端显示:

3.3 删除dom

remove()

形式: element.remove()

示例:

javascript 复制代码
    var father = document.querySelector('.father');
    var children = father.children;
    children[1].remove();

前端显示:

3.4 克隆dom

cloneNode()

形式: element.cloneNode(deep)

**⚪deep:**false(默认值) - 复制元素; true - 复制元素和内容

示例:

javascript 复制代码
var brother = children[0].cloneNode(true);
console.log(brother);

在控制台输出:

总结

DOM(文档对象模型)是JavaScript操作网页内容的核心,通过它我们可以动态地访问、修改、添加或删除页面元素。掌握DOM操作,能让你的网页"活"起来,实现交互效果与数据动态更新。

虽然初学可能觉得有些抽象,但多练习几次就会得心应手!DOM是前端开发的必备技能,也是迈向更复杂框架(如React、Vue)的基础。不妨动手写个小demo试试,你会发现它其实很有趣!

继续探索吧,未来的前端大神就是你!​ 💪🚀

相关推荐
开开心心就好3 小时前
批量提取PDF中的图片,直接导出原图
前端·javascript·支持向量机·智能手机·pdf·html·启发式算法
IvanCodes4 小时前
Python 数据处理(十三):JSON、CSV 与数据序列化
开发语言·python
Setsuna_F_Seiei5 小时前
前端转型 Agent 开发 05 之 Agent Hooks 与 Checkpointer(让 Agent 从全自动转变人为可掌控)
前端·agent·ai编程
aramae6 小时前
MySQL复合查询(8)
java·c语言·开发语言·后端·算法
百万蹄蹄向前冲7 小时前
风扇转了一晚上MVP专家团翻车事故
前端·人工智能
默_笙7 小时前
🏛 给 AI 配一间办公室:Harness Engineering 六大模块与它的实现
前端·javascript
linux_cfan8 小时前
videojs v10 源代码系列解读:14 · 谓词守卫:在运行时安全地调用能力
前端·javascript·音视频
qq_2518364578 小时前
springboot vue3 开发实现 拼豆管理系统
java·开发语言·ai编程
kyriewen9 小时前
我扒了 10,221 条 JD:腾讯技术岗 75% 在要 AI
前端·人工智能·ai编程
郑州光合科技余经理9 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程