Js中parentNode,parentElement,childNodes,children之间的区别

Js中parentNode,parentElement,childNodes,children之间的区别

在JavaScript中,我们经常需要访问DOM节点。parentNode、parentElement、childNodes以及children都是常用的访问DOM节点的属性或方法,它们之间有着不同的特点和用法。本文将结合示例来详细讲解这四个属性或方法的区别。

parentNode和parentElement

parentNode和parentElement都是访问节点的父节点的属性,它们之间的区别在于parentElement只能访问元素节点的父节点,而parentNode可以访问任何节点的父节点。

<div id="parent">
  <p id="child">这是一个段落</p>
</div>
let child = document.getElementById('child');
console.log(child.parentNode); // #parent
console.log(child.parentElement); // #parent

在上述示例中,child.parentNode和child.parentElement访问到的都是id为parent的div节点。

另外,使用parentElement的得到的结果可能会比较好理解。比如在上述示例中我们把p标签用span标签替换:

<div id="parent">
  <span id="child">这是一个文本</span>
</div>
let child = document.getElementById('child');
console.log(child.parentNode); // #parent
console.log(child.parentElement); // null

此时child.parentNode仍然可以访问到div节点,而child.parentElement返回的则是null,因为span节点的父节点不是一个元素节点,而是文本节点(因为它只包含了一段文本,而不是完整的标签结构)

childNodes和children

childNodes和children都是访问节点的子节点的属性或方法,但是它们之间还是有区别的。childNodes会返回所有的子节点,而children则会忽略掉非元素节点。

<div id="parent">
  <p id="child1">这是一个段落1</p>
  这是一段文本
  <p id="child2">这是一个段落2</p>
</div>
let parent = document.getElementById("parent");
console.log(parent.childNodes.length); // 5
console.log(parent.children.length); // 2

在上述示例中,parent.childNodes访问到的是parent节点下的所有节点,包括两个p标签和两个文本节点,而parent.children则只返回了两个p标签。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Js中parentNode,parentElement,childNodes,children之间的区别 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • javascript 获取图片尺寸及放大图片

    获取图片尺寸及放大图片是前端开发中比较常见的需求,下面介绍如何使用JavaScript实现。 获取图片尺寸 我们可以使用Image对象来获取图片的尺寸。 const img = new Image(); img.src = "image.jpg"; img.onload = function() { console.log(`图片宽度:$…

    JavaScript 2023年6月11日
    00
  • 纯js实现div内图片自适应大小(已测试,兼容火狐)

    下面是纯js实现div内图片自适应大小的完整攻略: 目录 实现思路 代码实现 示例一 示例二 实现思路 实现div内图片自适应大小,需要解决以下两个问题: 如何获取图片的宽度和高度? 如何在图片加载完成后将其按照正确的比例缩放到合适的大小? 因此,我们的实现思路是: 使用JS监听图片的load事件,在图片加载完成后获取其宽度和高度。 判断图片的宽高比例与容器…

    JavaScript 2023年6月11日
    00
  • Vue文件下载进度条的实现过程

    实现Vue文件下载进度条需要了解以下几个步骤: 发送请求并获取相应数据。 获取响应头中的 Content-Length 值和用于标识下载唯一性的 Etag 或者 Last-Modified 等值作为断点续传的 key。 使用 Blob 对象生成 Blob url 并模拟下载。 读取 Blob 数据的进度值,更新 UI 展示进度条。 下面是具体的实现过程: 1…

    JavaScript 2023年6月11日
    00
  • javascript客户端遍历控件与获取父容器对象示例代码

    题目涉及到两个主题:JavaScript客户端遍历控件和获取父容器对象。下面,我将从以下几个方面为大家提供一份完整的攻略: JavaScript客户端遍历控件概述; 遍历控件示例说明; 获取父容器对象概述; 获取父容器对象示例说明。 1. JavaScript客户端遍历控件概述 在JavaScript中,我们经常需要访问页面中的控件对象。这些控件对象通常是通…

    JavaScript 2023年6月10日
    00
  • Mybatis常用分页插件实现快速分页处理技巧

    Mybatis常用分页插件实现快速分页处理技巧 背景 在使用Mybatis作为应用程序的ORM框架时,我们通常需要实现对数据库表的快速分页查询。而Mybatis常用的分页插件可以帮助我们快速实现这个功能。 准备工作 在使用分页插件之前,我们需要先将其引入到项目中,并在Mybatis的配置文件中进行配置。 引入分页插件 在Maven项目中,我们可以在pom.x…

    JavaScript 2023年6月10日
    00
  • 老生常谈JavaScript 正则表达式语法

    老生常谈JavaScript 正则表达式语法攻略 什么是正则表达式 正则表达式是用来匹配字符串中特定模式的表达式。在 JavaScript 中,正则表达式被定义为一个 RegExp 对象。使用正则表达式的方法是通过调用 RegExp 对象的方法。 正则表达式基础语法 正则表达式由一个或多个字符和特殊字符组成。其中特殊字符有特定的含义,例如.代表任意字符,[a…

    JavaScript 2023年6月10日
    00
  • python爬取免费代理并验证代理是否可用

    针对 “python爬取免费代理并验证代理是否可用” 这个话题,我来给您详细讲解一下攻略。 1. 爬取免费代理 要爬取免费代理,我们可以利用 requests 库来发起网络请求。我们可以以 快代理 为例,代码如下所示: import requests from bs4 import BeautifulSoup def get_proxies(url): # …

    JavaScript 2023年5月28日
    00
  • JS关于刷新页面的相关总结

    JS关于刷新页面的相关总结 在前端开发中,页面刷新是一项非常重要的操作。在JavaScript中,可以通过不同的方式来实现页面的刷新,本篇文章将对JS关于刷新页面的相关知识进行总结。 1. location.reload() location.reload() 方法用于重新加载当前文档。该方法会重新向服务器发送请求,从而获取最新的内容,刷新页面。下面是一个简…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部