JS的dom操作基础——获取元素

article/2025/5/10 3:44:51

系统提供的方法

在H5之前的技术:

1、getElementById("目标元素的id值")  通过标签的id获取,如果未找到返回null。

2、getElementsByClassName("目标元素的class属性值")  通过标签的class类名获取,获取的元素放在的类数组中返回,如果没找到返回空的类数组。

3、getElementsByTagName("目标元素的标签")   通过标签名获取 获取的元素放在的类数组中返回,如果没找到返回空的类数组。

4、getElementsByName("目标元素的name属性值")    通过标签的name属性的值获取    获取的元素放在的类数组中返回,如果没找到返回空的类数组。

注意:这些获取元素的方法的取元素时,小括号内记到加引号,传入的是字符串格式。

接下来我们实际操作一下用以上方法,获取一下网页元素。

<div id="box"><div class="box1">box1</div><div class="box2">box2</div><div class="box3">box3</div><div class="box3">box4</div></div><a name="a1" href="">111</a><a name="a1" href="">222</a><a href="">333</a><script>var box = document.getElementById("box")console.log(box);var box3 = document.getElementsByClassName("box3")console.log(box3);var boxx = document.getElementsByTagName("div")console.log(boxx);var a0 = document.getElementsByTagName("a")console.log(a0);var a1 =document.getElementsByName("a1")console.log(a1);</script>

 控制台的打印情况:

在H5时,新出了两个获取元素的方法:

1、querySelector()  返回符合选择器的第一元素,如果没找到返回null

2、querySelectorAll()  返回符合选择器的所有元素,如果没找到返回空的类数组。

这两个方法在实际开发用的最多,因为它可以综合了以前获取元素的方式,小括号内填写如写css样式的选择器写法。即我们可以通过id、class、标签名等方式在这个方法中获取元素。

代码展示:

<div id="box"><div class="box1">box1</div><div class="box2">box2</div><div class="box3">box3</div><div class="box3">box4</div>
</div><script>//三种方式都可以获取到这个div var box = document.querySelector("#box")console.log(box);var boxs = document.querySelector(".box")console.log(boxs);var boxz = document.querySelector("div")console.log(boxz); //因为返回的是找到的第一个元素//要获取全部div节点 就需要用到querySelectorAllvar boxsz = document.querySelectorAll("div")console.log(boxsz);</script>

控制台打印情况 :

总结H5的技术很好用,但是getELementById的速度是最快的。

官方还提供了一些直接获取的方式:

document.body 获取body标签

document.forms 获取form表单们

document.anchors 获取a标签们

document.images 获取图片们

document.links 获取链接们

document.URL 获取当前文档的网址


通过关系获取元素:

获取父元素的方法:parentElement、parentNode

parentElement和parentNode的区别:

parentElement获取父元素;

parentNode获取父节点。

在平时使用时两者并无区别,唯一的区别是:在获取根部document节点是,parentElement找的是元素,返回null,而parentNode获取的是节点,返回的是#document。

代码展示:

<div class="b"><div class="b1"></div><div class="b2"><div class="b21"></div></div><div class="b3"></div></div><script>var b21 = document.querySelector(".b21")//分别用两者 console.log(b21.parentElement);console.log(b21.parentNode);//获取一下document节点看一下		console.log(b21.parentElement.parentElement.parentElement.parentElement.parentElement);
console.log(b21.parentNode.parentNode.parentNode.parentNode.parentNode);</script>

控制台打印结果:

获取子元素的方法:children、childNodes

children:获取所有子元素;

childNodes:获取所有子节点。

相同点:他们的结果都是装在类数组中返回,如果未找到就返回空的类数组。

不同点:childNodes会把换行等都找出来,而children不会。

代码说明:

<div class="b"><div class="b1"></div><div class="b2"><div class="b21"></div></div><div class="b3"></div></div><script>var b = document.querySelector(".b")console.log(b.children);console.log(b.childNodes);</script>

打印结果:

 

childNodes把行换看成一个text文本加到类数组中。 

 在实际开发中,我们可以通过下标选取我们需要的子元素,代码展示:

<div class="b"><div class="b1"></div><div class="b2"><div class="b21"></div></div><div class="b3"></div></div><script>var b = document.querySelector(".b")var son1 = b.children[0] //获取第一个子元素var son2 = b.childNodes[1]//获取第一个子元素console.log(son1,son2);</script>

打印结果:

 关于获取子节点,官方还提供了firstElementChild获取第一个子元素、firstChild获取第一个子节点;lastElementChild获取最后一个子元素、lastChild获取最后一个子节点。

获取兄弟元素的方法:

获取弟元素:nextElementSibling、nextSibling

nextElementSibling:获得弟元素,未找到返回null

nextSibling:获得弟节点,未找到返回null

注意:他们只返回离他们最近的一个结果,用nextSibling时空格、换行也会被当作一个子节点

代码演示:

<div class="b"><div class="b1"></div><div class="b2"><div class="b21"></div></div><div class="b3"></div></div><script>var b1=document.querySelector(".b1")console.log(b1.nextElementSibling);console.log(b1.nextSibling);</script>

打印结果:

 

获取兄元素:previousElementSibling、previousSiblin

用法与获取弟元素相似,不再多做说明。

拓展:我们在对象的原型上添加一个可以知道获取的元素是同胞中的第几个的方法。

	<script>Object.prototype.indexof01 = function(){var arr = this.parentElement.childrenfor (let i = 0; i < arr.length; i++) {if(arr[i]==this){return i;}}}</script>


http://chatgpt.dhexx.cn/article/ZurCGSGX.shtml

相关文章

landsat5数据下载1985年中国地区

1、landsat5中国地区数据数据1451景

Landsat5数据下载中国地区1986年

1、landsat5中国地区1986年数据4005景

Landsat5数据下载中国地区1990年

1、Landsat5中国地区1990年总计10322景

Landsat5数据下载中国地区1992年

1、Landsat5中国地区1992年总计12883景

Landsat5数据下载中国地区1987年

1、Landsat5中国地区1987年总计7456景

Landsat系列卫星

美国NASA的陆地卫星(Landsat)计划&#xff0c;从1972年7月23日以来&#xff0c; 已发射8颗&#xff08;第6颗发射失败&#xff09;。 Landsat8&#xff1a;OLI陆地成像仪&#xff0c;TIRS热红外传感器&#xff0c;卫星一共有11个波段&#xff0c;波段1-7&#xff0c;9-11的空间…

ENVI5.1 从Landsat5数据学习大气纠正

我得到了老师给我的Landset TM数据&#xff0c;下面要自己摸索学习ENVI5.1以及大气纠正了。 好吧&#xff0c;按照一般我自己的学习路线开始吧。彻彻底底地从头开始。 1、首先&#xff0c;得到老师给的这样的的数据。 Landse t数据的命名规则是 以L5123032_03220100605_B10.…

Google Earth Engine ——Landsat 5 TM_TOA数据集DN值缩放的、校准的传感器辐射度数据集

Landsat 5 TM Collection 1 Tier 1 calibrated top-of-atmosphere (TOA) reflectance. Calibration coefficients are extracted from the image metadata. See Chander et al. (2009) for details on the TOA computation. Landsat 5 TM Collection 1 Tier 1校准的大气层顶部…

GEE:时间序列分析2——将Landsat5、7、8所有影像合成一个影像集合,构建NDVI时间序列

本文记录了在Google Earth Engine(GEE)平台上,将Landsat-5、Landsat-7和Landsat-8合成同一个影像集合,并把这个新的影像集合合并成一个大的集合的代码,并计算了NDVI指数,构建了一个NDVI年度合成的时间序列数据集。为之后时间序列分析做数据准备。 其中主要函数已经封装成…

USGS下载LANDSAT5 2级别 影像问题

USGS下载LANDSAT5 2级别 影像问题 算是老师留的课设吧&#xff0c;用到了LANDSAT卫星&#xff0c;在USGS这个傻狗网站上下载&#xff0c;可给我气坏了。。。。 用ENVI打开MTI.txt打不开&#xff0c;提示报错是这样沈的&#xff1a; 回文件夹里一找&#xff0c;笑死&#xff0…

利用ENVI实现landsat 5地表温度反演

1&#xff1a;将landsat 5数据进行大气校正 2&#xff1a;计算NDVI, 3:利用混合相元法计算植被覆盖度 fv 代表裸地的NDVI值&#xff0c;代表全部植被覆盖的NDVI值 根据自己的实际情况确定上述两个值&#xff0c;比如为-0.2&#xff0c;为0.7 利用envi的波段运算&#xff…

envi如何打开Landsat5 TM数据

(1)在envi中点击file>open as>opptical sensions>Landsat>GeoTIFF with Metadata (2)找到解压后的Landsat5数据文件夹&#xff0c;选择文件名为MTL的数据&#xff0c;点击打开。这样Landsat5数据即加载入ENVI中了&#xff0c;并在ENVI中显示出来了。 同样的&#x…

(一)Landsat_5 TM 头文件信息预览(内含各校正重要参数)

一、Landsat_5 TM 参数介绍 注&#xff1a;以下信息参考百度百科 Landsat-5卫星主要轨道特性参数如下&#xff1a; 近极近环形太阳同步轨道 倾角&#xff1a;98.2。 轨道周期&#xff1a;99分钟 穿越赤道时间&#xff1a;上午9点45分/-15分钟 扫描带宽度&#xff1a;185km 重访…

(二)Landsat_5 TM 遥感影像波段合成真假彩色影像

前言 回顾以下Landsat系列卫星的发展史&#xff0c;可以发现Landsat_5卫星已经退役&#xff0c;作为世界上寿命最长的地球观测卫星&#xff0c;其在影像方面对人类的发展具有很深刻的意义。Landsat_5 TM共有7个波段&#xff0c;通过不同的波段组合&#xff0c;形成不同遥感图像…

遥感学习笔记(五)——Landsat卫星简介

美国NASA的陆地卫星(Landsat)计划(1975年前称为地球资源技术卫星 — ERTS )&#xff0c;从1972年7月23日以来&#xff0c; 已发射8颗&#xff08;第6颗发射失败&#xff09;。目前Landsat1—4均相继失效&#xff0c;Landsat 5于2013年6月退役。 Landsat 7于1999年4月15日发射升…

尚硅谷Maxwell视频教程发布

学大数据的小伙伴们&#xff0c; 垒哥的Atlas和Kylin视频看完了吗&#xff1f; 担心你没了学习资料放纵堕落&#xff0c; 垒哥又带着新视频来啦&#xff01; 我问垒哥&#xff1a;今晚不喝酒行吗&#xff1f; 垒哥说&#xff1a;行&#xff01; 我问垒哥&#xff1a;今晚不…

尚硅谷视频总结——Java多线程

多线程 一&#xff1a;基本概念&#xff1a;程序&#xff0c;进程&#xff0c;线程 程序(program)&#xff1a;程序是为完成特定任务&#xff0c;用某种语言编写的一组指令的集合。即指一段静态的代码&#xff0c;静态对象。 进程(process)&#xff1a;进程是程序的一次执行…

Vue学习笔记--第一章(尚硅谷学习视频总结)

目录 一、第一章 Vue核心 1.1. Vue简介 1.1.1. 官网 1.1.2. 介绍与描述 1.1.3. Vue 的特点 1.1.4. 与其它 JS 框架的关联 1.1.5. Vue 周边库 1.2.初识Vue 1.3. 模板语法 1.4. 数据绑定 1.5 el与data的两种写法 1.6 MVVM模型 1.7 Vue中的数据代理 1.8.事件处理 1.…

JUC编程的使用(基于尚硅谷视频)

文章目录 1.核心概念2.线程2.1线程的实现2.2 多线程的使用方法&#xff08;重点&#xff09;2.3.Synchronized关键字&#xff08;自动上锁和解锁&#xff09;2.4Look锁&#xff08;手动上锁和解锁&#xff09;2.4.1常用方法2.4.2常用类 2.5可定制化线程 2.6线程的状态3.ArrayLi…

强强联手 | 尚硅谷Dinky视频教程发布

Dinky为Apache Flink而生&#xff0c;让Flink SQL纵享丝滑。顾名思义&#xff0c;Dinky是一个小而美的框架&#xff0c;它基于 Apache Flink 二次开发&#xff0c;无侵入&#xff0c;开箱即用&#xff0c;是易扩展的一站式 FlinkSQL & SQL DataOps&#xff0c;可以很大程度…