当前位置: 首页 > news >正文

nodelist 与 HTMLCollection 的区别

原地址 https://cloud.tencent.com/developer/article/2013289

节点与元素

根据 W3C 的 HTML DOM 标准,HTML 文档中的所有内容都是节点:

  • 整个文档是一个文档节点
  • 每个 HTML 元素是元素节点
  • HTML 元素内的文本是文本节点
  • 每个 HTML 属性是属性节点
  • 注释是注释节点

以下示例

<div id="user"><p id="demo" class="text-info">Hello</p>
</div>

每个 HTML 元素是元素节点,所以<div>是一个元素节点,<p>也是元素节点。 <p class="text-info">Hello</p>元素有属性和文本,所以class="text-info"id="demo"是属性节点,Hello是文本节点。 从上面例子可以看出,节点包含了元素,元素是属于节点的一种。

element 元素对象

节点都是单个对象,有时会需要一种数据结构,能够容纳多个节点。DOM提供两种集合对象,用于实现这种节点的集合:NodeList和HTMLCollection。

  • HTMLCollection 是表示 HTML 元素的集合。
  • NodeList 对象代表一个有顺序的节点列表

以下方法获取的为element 元素对象

  • document.getElementById(“id属性”)
  • document.querySelector(‘css选择器’)

示例

// getElementById返回元素
element1 = document.getElementById('user');
console.log(element1) // 返回整个div 元素<div id="user"><p id="demo" class="text-info">Hello</p></div>
element2 = document.getElementById('demo');
console.log(element2) // <p id="demo" class="text-info">Hello</p>
// querySelector返回元素
element1 = document.querySelector('#user');
console.log(element1) // 返回整个div 元素<div id="user"><p id="demo" class="text-info">Hello</p></div>
element2 = document.querySelector('#demo');
console.log(element2) // <p id="demo" class="text-info">Hello</p>
element3 = document.querySelector('p');
console.log(element3) // <p id="demo" class="text-info">Hello</p>
element4 = document.querySelector('.text-info');
console.log(element4) // <p id="demo" class="text-info">Hello</p>
element5 = document.querySelector('p.text-info');
console.log(element5) // <p 

HTMLCollection 对象

HTMLCollection只能包含 元素节点(ElementNode)类型的节点, 以下方法返回HTMLCollection对象

  • document.getElementsByClassName(“className”)
  • document.getElementsByTagName(“tag名称”)
  • document.forms  // 对象选择器查找 HTML 对象
    <div id="user"><p id="demo" class="text-info">Hello</p><p>Hello</p></div>

使用示例

elements = document.getElementsByClassName("text-info");
console.log(elements);  // HTMLCollection
console.log(elements.length); // 获取个数
// 索引取值
console.log(elements[0]); // 下标取值 <p id="demo" class="text-info">Hello</p>
// item 根据下标取值
console.log(elements.item(0));
// namedItem 根据id 或name属性取值
console.log(elements.namedItem('demo'));

HTMLCollection 对象中的属性和方法:

属性 / 方法

参数

描述

length

返回 HTMLCollection 中元素的数量。

item()

索引 number类型

返回 HTMLCollection 中指定索引的元素。

namedItem()

字符串,传元素的id或name名称,如果id找不到就找name

返回 HTMLCollection 中指定 ID 或 name 属性的元素。

namedItem() 方法返回 HTMLCollection 对象中指定 ID 或 name 的元素。

HTMLCollection.namedItem(name)
或
HTMLCollection[name]

使用示例,以下两种方法都可以

// namedItem 根据id 或name属性取值
console.log(elements.namedItem('demo'));
// 也可以直接中括号里面传id或name属性
console.log(elements['demo']);

NodeList 对象

NodeList 是表示节点的集合。

NodeList 对象中的属性和方法: | 属性 / 方法 | 参数    | 描述                                     | | ————   |————— | ——————————————————— | | length     | 无    | 返回 NodeList 中的数量。             | | item()     | 索引 number类型   | 返回 NodeList 中指定索引的节点。           |

以下方法获取的为NodeList对象

  • document.getElementsByName(“name名称”)
  • document.querySelectorAll(“css选择器”)
  • element.childNodes  // 获取元素的子节点
    <form id="form-user"><label for="user-id">用户名</label><input id="user-id" name="username" value="yoyo"></form><div id="user"><p id="demo" class="text-info">Hello</p><p>Hello</p></div>

使用示例

nodes = document.getElementsByName('username');
console.log(nodes)  // NodeList [input#user-id]
// length 属性
console.log(nodes.length)  //1
// 索引取值
console.log(nodes[0]) // <input id="user-id" name="username" value="yoyo">
// item索引取值
console.log(nodes.item(0))  // <input id="user-id" name="username" value="yoyo">

document.querySelectorAll()也一样

nodes = document.querySelectorAll('#user');
console.log(nodes);  // NodeList [div#user]
console.log(nodes.length);  // 1
// 索引取值
console.log(nodes[0]) // <input id="user-id" name="username" value="yoyo">
// item索引取值
console.log(nodes.item(0))  // <input id="user-id" name="username" value="yoyo">

element.childNodes 是获取元素的子节点

element = document.getElementById('user');
// childNodes 所有的子节点
console.log(element.childNodes);
console.log(element.childNodes.length);  // 5

HTMLCollection与NodeList区别

HTMLCollection 是表示 HTML 元素的集合,元素也是节点的一种,也就是元素节点,NodeList 是表示节点的集合 我们可以理解为 HTMLCollection 是 Nodelist 集合的一种。

差异

HTMLCollection

NodeList

length

item()

namedItem

forEach

索引取值

可以

可以

节点类型

元素节点

任意节点:文本节点、元素节点、属性节点、注释节点

HTMLCollection 不是一个数组!HTMLCollection 看起来可能是一个数组,但其实不是。 你可以像数组一样,使用索引来获取元素。 HTMLCollection 无法使用数组的方法:valueOf(), pop(), push(), 或 join()

NodeList节点列表不是一个数组!NodeList节点列表看起来可能是一个数组,但其实不是。 你可以像数组一样,使用索引来获取元素。 节点列表无法使用数组的方法:valueOf(), pop(), push(), 或 join() 。

相关文章:

nodelist 与 HTMLCollection 的区别

原地址 https://cloud.tencent.com/developer/article/2013289 节点与元素 根据 W3C 的 HTML DOM 标准&#xff0c;HTML 文档中的所有内容都是节点&#xff1a; 整个文档是一个文档节点每个 HTML 元素是元素节点HTML 元素内的文本是文本节点每个 HTML 属性是属性节点注释是注…...

系列十二、过滤器 vs 拦截器

一、过滤器 vs 拦截器 1.1、区别 &#xff08;1&#xff09;触发时机不一样&#xff0c;过滤器是在请求进入容器后Servlet之前进行预处理的&#xff0c;请求结束返回也是&#xff0c;是在Servlet处理完后&#xff0c;返回给前端之前&#xff1b; &#xff08;2&#xff09;过滤…...

dockerfile运行apk命令卡住的问题解决——更换镜像

在练习docker官方文档关于docker compose初体验&#xff08;https://docs.docker.com/compose/gettingstarted/&#xff09;过程中&#xff0c;执行dockerfile命令RUN apk add --no-cache gcc musl-dev linux-headers时&#xff0c;出现卡住的情况&#xff0c;等了几千秒都不行…...

Android - 编译 openssl 踩坑之路

一、简述 如果你想快速在项目中使用上 openssl,可以使用网上其他开发者提供好的预编译库: OpenSSL(All):https://builds.viaduck.org/prebuilts/openssl/OpenSSL(3.1.*) :https://github.com/217heidai/openssl_for_android以上的预编译库可能最低只支持 API 21(即 Andro…...

verdi技巧分享--合并多个fsdb文件、统计信号边沿

文章目录 0 前言1 如何显示信号高位的02 统计信号的上升沿、下降沿3 合并信号4 将多个fsdb文件合并成一个 0 前言 分享几个这段时间学到的verdi操作 1 如何显示信号高位的0 这个可能对一些有强迫症的有帮助吧 nand相关的操作&#xff0c;有一些特定的cmd&#xff0c;比如 r…...

czmq的4版本中CURVE怎么实现的两个程序之间使用的一个证书?

在CZMQ的4版本中&#xff0c;CURVE是一种加密机制&#xff0c;用于在两个程序之间建立安全的连接。要使用CURVE&#xff0c;你需要创建和分发公钥和私钥。以下是一个简单的步骤说明&#xff1a; 首先&#xff0c;你需要为每个程序生成一对公钥和私钥。你可以使用CZMQ的zcert类…...

Spring Boot整合Swagger

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开心好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;…...

SpringBoot-WebSocket浏览器-服务器双向通信

文章目录 WebSocket 介绍入门案例 WebSocket 介绍 WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c;并进行双向数据传输。 应用场景&#xff1a; 视…...

Docker网络模式_Docker常用命令_以及Docker如何给运行的镜像内容连接互联网_Docker网络模式原理---Docker工作笔记004

然后我们来看一下docker的网络模式: 这个docker我们先看一下电脑上的网络,有两个,1个是lo是测试用的一个是enp0s3这个是我们以太网地址,然后我们去: 安装docker 安装后我们再去ip address可以看到多出来一个网络是docker0 这里ip地址是172.17.0.1这个是私有地址外部无法访问 这…...

爬虫项目-爬取股吧(东方财富)评论

1.最近帮别人爬取了东方财富股吧的帖子和评论&#xff0c;网址如下&#xff1a;http://mguba.eastmoney.com/mguba/list/zssh000300 2.爬取字段如下所示&#xff1a; 3.爬虫的大致思路如下&#xff1a;客户要求爬取评论数大于5的帖子&#xff0c;首先获取帖子链接&#xff0c…...

【Midjourney入门教程2】Midjourney的基础操作和设置

文章目录 Midjourney的常用命令和基础设置1、 /imagine2、 /blend3、 /info4、 /subscribe5、 /settings&#xff08;Midjourney的基础设置&#xff09;6、 /shorten 有部分同学说我不想要英文界面的&#xff0c;不要慌&#xff1a; 点击左下角个人信息的设置按钮&#xff0c;找…...

后端使用DES加密,前端解密方法

前言&#xff1a; 现在为了防止用户直接篡改数据会采用加密的方式进行传输&#xff0c;加密的方法有很多种&#xff0c;这篇文章主要讲解下后端使用DES加密的数据传输给前端&#xff0c;前端接收到之后如何去解密。 操作步骤如下&#xff1a; 1.安装crypto-js npm install c…...

chrome 扩展 popup 弹窗的使用

popup的基本使用方法 popup介绍 popup 是点击 browser_action 或者 page_action图标时打开的一个小窗口网页&#xff0c;焦点离开网页就立即关闭&#xff0c;一般用来做一些临时性的交互。 popup配置 V3版本中&#xff08;V2版本是在 browser_action 中 &#xff09;&#x…...

Spring Security入门教程,springboot整合Spring Security

Spring Security是Spring官方推荐的认证、授权框架&#xff0c;功能相比Apache Shiro功能更丰富也更强大&#xff0c;但是使用起来更麻烦。 如果使用过Apache Shiro&#xff0c;学习Spring Security会比较简单一点&#xff0c;两种框架有很多相似的地方。 目录 一、准备工作 …...

如何在 Unbuntu 下安装配置 Apache Zookeeper

简介 Zookeeper 是 apache 基金组织下的项目&#xff0c;项目用于简单的监控和管理一组服务&#xff0c;通过简单的接口就可以集中协调一组服务&#xff0c;如配置管理&#xff0c;信息同步&#xff0c;命名&#xff0c;分布式协调。 准备工作 Ubuntu 23.04 或者 20.04访问…...

AI视觉领域流媒体知识入门介绍(二):深入理解GOP

GOP&#xff08;group of pictures&#xff09; 在流行的视频编码算法中&#xff0c;都包含GOP这个概念&#xff0c;例如MPEG-2, H.264, and H.265。 背景 关于视频存储和传输的“size”&#xff1a; Resolution 分辨率 Uncompressed Bitrate 未压缩时的比特率 1280720 (720p…...

C++ 代码实例:并查集简单创建工具

文章目录 前言代码仓库代码说明main.cppMakefile 结果总结参考资料作者的话 前言 C 代码实例&#xff1a;并查集简单创建工具。 代码仓库 yezhening/Programming-examples: 编程实例 (github.com)Programming-examples: 编程实例 (gitee.com) 代码 说明 简单地创建并查集注…...

Hadoop学习总结(Shell操作)

HDFS Shell 参数 命令参数功能描述-ls查看指定路径的目录结构-du统计目录下所有文件大小-mv移动文件-cp复制文件-rm删除文件 / 空白文件夹-put上传文件-cat查看内容文件-text将源文件输出文本格式-mkdir创建空白文件夹-help帮助 一、ls 命令 ls 命令用于查看指定路径的当前目录…...

LeetCode热题100——链表

链表 1. 相交链表2. 反转链表3. 回文链表4. 环形链表5. 合并两个有序链表 1. 相交链表 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 // 题解&#xff1a;使用A/B循环遍…...

使用C++的QT框架实现贪吃蛇

最近刷抖音经常看到别人使用类似chatGPT的al工具实现这个贪吃蛇游戏&#xff0c;正好我之前也写过&#xff0c;那么今天看看怎么去实现这个简单的游戏 我这边使用的是C的QT框架&#xff0c;当然用哪些框架都可以&#xff0c;主要是逻辑思路 1.生成画布&#xff0c;开始是一些…...

Llama-3.2V-11B-cot效果展示:低光照/模糊图像下的鲁棒推理案例

Llama-3.2V-11B-cot效果展示&#xff1a;低光照/模糊图像下的鲁棒推理案例 1. 项目概述 Llama-3.2V-11B-cot是基于Meta Llama-3.2V-11B-cot多模态大模型开发的高性能视觉推理工具&#xff0c;专为双卡4090环境深度优化。该工具不仅修复了视觉权重加载的关键Bug&#xff0c;还…...

Windows 11下FANUC CNC Guide v25.0仿真环境搭建全记录:PMC功能启用+多机型测试指南

Windows 11专业环境下FANUC CNC Guide v25.0高级仿真配置实战 当工业4.0遇上智能制造浪潮&#xff0c;掌握核心数控系统的仿真能力已成为工程师的必备技能。作为全球领先的数控系统供应商&#xff0c;FANUC的CNC Guide仿真软件让用户能够在PC端完整复现真实机床的控制环境。本…...

从零到一:手把手教你用cam_lidar_calibration标定自己的VLP-16与海康相机(附完整ROS Bag录制技巧)

从零到一&#xff1a;VLP-16激光雷达与海康相机联合标定实战指南 当激光雷达点云与相机图像在自动驾驶系统中完美对齐时&#xff0c;传感器融合的魔法才真正开始。作为机器人感知的核心环节&#xff0c;标定质量直接决定了后续目标检测、SLAM等模块的精度上限。本文将手把手带您…...

Pixel Language Portal惊艳效果集:梵文古籍→现代汉语的逐层语义解构与重构展示

Pixel Language Portal惊艳效果集&#xff1a;梵文古籍→现代汉语的逐层语义解构与重构展示 1. 像素语言传送门核心能力 Pixel Language Portal&#xff08;像素语言跨维传送门&#xff09;是基于Tencent Hunyuan-MT-7B引擎构建的创新翻译工具。与传统翻译软件不同&#xff0…...

效率翻倍:利用Streamlit界面快速A/B测试,找到最佳转换参数组合

效率翻倍&#xff1a;利用Streamlit界面快速A/B测试&#xff0c;找到最佳转换参数组合 1. 为什么需要参数A/B测试 在2.5D转真人的图像转换任务中&#xff0c;参数组合的选择直接影响最终效果。传统的命令行工具需要反复修改配置文件并重启服务&#xff0c;效率极低。而Anythi…...

新手程序员福音:coze-loop智能优化代码,附详细修改说明

新手程序员福音&#xff1a;coze-loop智能优化代码&#xff0c;附详细修改说明 1. 为什么新手程序员需要代码优化工具 刚入行的程序员常常面临一个困境&#xff1a;写出的代码虽然能运行&#xff0c;但质量参差不齐。要么效率低下&#xff0c;要么难以维护&#xff0c;要么存…...

YOLO12与YOLO11对比:新一代模型在精度和速度上有哪些提升?

YOLO12与YOLO11对比&#xff1a;新一代模型在精度和速度上有哪些提升&#xff1f; 1. 引言 目标检测技术作为计算机视觉领域的核心任务之一&#xff0c;其发展一直备受关注。YOLO(You Only Look Once)系列模型因其出色的实时性能而广受欢迎。2025年&#xff0c;Ultralytics推…...

激光测距技术:从原理到选型的全方位指南

1. 激光测距技术的基本原理 激光测距技术本质上是通过测量激光信号从发射到接收的时间或相位变化来计算距离。想象一下你在山谷里大喊一声&#xff0c;通过听到回声的时间差就能估算出对面山壁的距离&#xff0c;激光测距就是这个原理的"高科技版本"。只不过激光的速…...

10点滑动平均滤波器:嵌入式零依赖高效实现

1. 项目概述MovingAverageFilter 是一个轻量级、零依赖的嵌入式数字滤波器实现&#xff0c;专为资源受限的微控制器环境设计。其核心功能是执行固定长度&#xff08;10点&#xff09;的滑动平均&#xff08;Moving Average&#xff09;运算&#xff0c;并在每次新采样输入后立即…...

终极GRUB配置指南:让build-linux系统成功启动的7个关键步骤

终极GRUB配置指南&#xff1a;让build-linux系统成功启动的7个关键步骤 【免费下载链接】build-linux A short tutorial about building Linux based operating systems. 项目地址: https://gitcode.com/gh_mirrors/bu/build-linux build-linux项目是一个构建Linux操作系…...