javascript 使用 NodeList需要注意的问题

yizhihongxing

当我们在使用JavaScript的DOM操作时,常常会遇到返回NodeList类型的情况,例如使用querySelectorAll()方法、通过节点对象的childNodes属性或parentElement.children属性来获取子节点等等。但是NodeList与数组有着相似的使用方法,却存在一些需要注意的问题。

NodeList不是数组

NodeList并不是数组类型,虽然使用方式与数组类似,但是不能直接使用数组方法,例如forEach()map()等操作。同样也没有数组的一些内置方法或属性,例如push()pop()slice()等。

如果想要使用数组方法,需要将NodeList转换为数组,可以使用Array.from()方法或直接使用展开操作符(spread operator)。

// 复制为数组形式
const list = Array.from(document.querySelectorAll('li'));
// 或者使用展开操作符
const list = [...document.querySelectorAll('li')];

NodeList是动态的

尽管NodeList不是数组,但是却是动态的。也就是说当文档中的节点发生变化时,返回的NodeList也会发生变化。

<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
</ul>

<button onclick="addNode()">添加节点</button>

<script>
function addNode() {
  const ul = document.querySelector('ul');
  const li = document.createElement('li');
  li.textContent = '4';
  ul.appendChild(li);
}

const list = document.querySelectorAll('li');
console.log(list.length); // 输出 3

addNode();
console.log(list.length); // 输出 4
</script>

上面的例子中,当页面加载完成之后,获取了三个li元素,但是当我们通过点击按钮添加了一个新的li元素之后,再次打印list时,它的长度变成了4。这说明NodeList与页面上的 DOM元素存在强关联性,并且 Node List内容随之动态变化。

总结

需要注意的是,NodeList并不是标准的JavaScript数据结构,但是由于与DOM操作密不可分,因此我们在日常开发中会经常接触到它。了解它的特点和使用方式,有助于我们更加深入地理解DOM操作的本质,提高代码质量和效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript 使用 NodeList需要注意的问题 - Python技术站

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

相关文章

  • nodejs加密Crypto的实例代码

    接下来我将为您详细讲解如何使用Node.js中的Crypto模块进行加密,包括实例代码以及使用说明。 Crypto模块简介 Crypto模块是Node.js内置的加密模块,提供了一些常见的加密算法,包括AES、DES、RSA、HMAC等。可以使用Crypto模块进行数据的加解密、哈希计算、数字签名等操作,是Node.js中常用的安全模块。 加密实例代码 下面…

    node js 2023年6月8日
    00
  • JavaScript Typescript基础使用教程

    JavaScript Typescript基础使用教程 本教程旨在介绍JavaScript和Typescript的基础使用,帮助初学者快速上手。以下是本教程的主要内容: JavaScript基础使用 基本语法 JavaScript是一种脚本语言,最常见的用途是在网页中添加动态交互效果。JavaScript的基本语法与其他编程语言类似,包括变量声明、数据类型、…

    node js 2023年6月8日
    00
  • vs code怎么搭建NodeJs的开发环境? vscode运行nodejs代码的技巧

    下面来详细讲解在 VS Code 中如何搭建NodeJs的开发环境,并介绍运行NodeJs代码的技巧。 搭建NodeJs的开发环境 步骤一:下载Node.js 下载Node.js最新版本,下载链接为:https://nodejs.org/en/download/ 步骤二:安装Node.js 安装Node.js,可以直接使用默认配置,一路“下一步”即可。 步骤…

    node js 2023年6月8日
    00
  • JS前端认证授权技巧归纳总结

    JS前端认证授权技巧归纳总结 什么是认证和授权? 在讲解JS前端认证和授权技巧之前,我们需要先了解认证和授权的概念。 认证(Authentication):是指验证一个用户是否合法的过程,常用的认证方式包括账号密码、邮箱验证码等。 授权(Authorization):是指确定该用户是否有权利进行某个操作或访问某个资源的过程,常用的授权方式包括角色权限、资源权…

    node js 2023年6月8日
    00
  • 教你用NodeJs构建属于自己的前端脚手工具

    教你用NodeJs构建属于自己的前端脚手工具 什么是脚手工具 在前端开发中,我们经常会通过一些工具帮助我们进行项目构建、代码打包等一系列操作。这些工具通常成为脚手工具,它能够让我们的开发工作更加高效。 用NodeJs构建脚手工具 NodeJs是一个非常流行的JavaScript运行环境,它可以让我们的JavaScript代码运行在服务器端,并提供了一系列强大…

    node js 2023年6月8日
    00
  • NodeJS学习笔记之(Url,QueryString,Path)模块

    下面是关于“NodeJS学习笔记之(Url,QueryString,Path)模块”的完整攻略: 什么是Url,QueryString和Path? 在介绍Url,QueryString和Path模块之前,我们先来了解一下他们的概念: Url: 统一资源定位符,是指向互联网“资源”的指针。 QueryString: 查询字符串,是Url中问号后面的部分,包括多…

    node js 2023年6月8日
    00
  • node使用request请求的方法

    下面是关于“node使用request请求的方法”的完整攻略。 什么是request模块 request是一个基于Node.js的 HTTP 客户端请求模块,使用它可以发出 HTTP/HTTPS 请求,处理 API 返回的数据。 安装request模块 使用npm命令安装: npm install request request的使用方法 发送GET请求 下…

    node js 2023年6月8日
    00
  • Node.js自定义实现文件路由功能

    下面是Node.js自定义实现文件路由功能的完整攻略: 环境准备 首先,我们需要安装Node.js。在Node.js官网(https://nodejs.org/en/)上下载安装包,安装完成后打开命令行工具,输入node -v查看是否安装成功。 创建项目 在命令行中进入你的项目根目录(可以通过cd命令进入),执行以下命令: npm init -y 这个命令将…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部