javaScript13DOM获取

3.1、DOM初相识

3.1.1、DOM简介

文档对象模型(Document Object Model ,简称DOM),它就是一些系列编程接口,有了这些接口,就可以改变页面内容,结构和样式

DOM树:

文档:一个页面就是一个文档,DOM中使用document表示

元素:页面中所有的标签都是元素,DOM中使用element表示

节点:网页中所有内容都是节点(标签、属性、文本、注释等),DOM中使用node表示

DOM把以上内容都看作是对象

3.1.2、事件前言

事件:就是用户和浏览器之间的交互行为,比如:点击按钮,鼠标移动,关闭窗口.....

事件非常多,为了方便演示,先学简单的事件,后面再详细学习

方式一、

标签中对应的属性(事件属性)中设置一些js代码,这样当事件被触发时,这些代码将会被执行

这种方式:结构与行为耦合,不方便维护,不推荐使用

<button id="btn"  onclick="alert('哈喽');">我是一个按钮</button> //onclick点击事件,点击的时候触发

方式二、

可以为按钮的对应事件绑定处理函数的形式来响应事件,这样当事件被触发时,其对应的函数将会被调用

<body><button id="btn">我是一个按钮</button><script>//第一步:获取按钮对象var btn=document.getElementById("btn");//第二步:绑定一个单击事件//像这种为单击事件绑定的函数,我们称为单击响应函数btn.onclick=function(){alert("你好")}</script>    
</body>

3.1.3、文档的加载

浏览器在加载一个页面时,是按照自上向下的顺序加载的,读取到一行就运行一行,如果将script标签写到页面的上边, 在代码执行时,页面还没有加载,页面没有加载DOM对象也没有加载 ,会导致无法获取到DOM对象。

第一种加载情况:

将js代码编写到页面的下部就是为了,可以在页面加载完毕以后再执行js代码

<button id="btn">点我一下</button><script type="text/javascript">//获取id为btn的按钮var btn = document.getElementById("btn");//为按钮绑定一个单击响应函数btn.onclick = function () {alert("hello");};</script>

第二种加载写法:

onload事件会在整个页面加载完成之后才触发, 为window绑定一个onload事件 ,该事件对应的响应函数将会在页面加载完成之后执行, 这样可以确保我们的代码执行时所有的DOM对象已经加载完毕了

window.onload = function () {//获取id为btn的按钮var btn = document.getElementById("btn");//为按钮绑定一个单击响应函数btn.onclick = function () {alert("hello");};};

3.2、DOM获取

DOM在我们实际开发中主要用来操作元素。一般有以下方法获取DOM

3.2.1、getElementById()

通过id属性获取一个元素节点对象,参数:id是大小写敏感的字符串,返回的是一个元素对象

补充1:innerHTML 可读写,一方面可获取到元素内部的html代码,另一方面可以操作更改元素内容,包括标签,保留空格和换行,比较常用

补充2:innerText 可读写,它和innerHTMl类似,不同的是更改元素内容的时候,它会自动将html标签,空格和换行去除

补充3:console.dir 打印我们返回的元素对象,更好的查看里面的属性和方法

var btn01 = document.getElementById("btn01");   //查找#btn01节点btn01.onclick = function () {var bj = document.getElementById("bj") //查找#bj节点alert(bj.innerHTML);//console.dir(bj, "bj");};

3.2.2、getElementsByTagName()

3.2.2.1、根据标签名来获取一组元素节点对象

返回一个类数组(伪数组)对象,所有查询到的元素都会封装到对象中,即使查询到的元素只有一个,也会封装到伪数组中返回;如果页面中没有这个元素,则会返回一个空的伪数组;

var btn02 = document.getElementById("btn02");btn02.onclick = function () {var lis = document.getElementsByTagName("li");//打印lis//alert(lis.length);//遍历lisfor (var i = 0; i < lis.length; i++) {console.log(lis[i].innerHTML);}};
3.2.2.2、获取某个元素(父元素)内部所有指定标签名的元素

1 element.getElementsByTagName('标签名')

注意:父元素必须是单个对象(必须指明是哪一个元素对象),获取的时候不包括父元素自己

//获取id为city的元素
var city = document.getElementById("city");
/*  1:city.getElementsByTagName(); 获取元素下的一组节点  */
var lis = city.getElementsByTagName("li");

3.2.3、getElementsByName()

通过name属性获取一组元素节点对象

补充2: innerHTML用于获取元素内部的HTML内容的,对于自结束标签,这个属性没有意义

补充3:如果需要读取元素节点属性,语法: 元素.属性名,

例如:元素.id ;元素.name ;元素.src ;元素.href等

表单属性:type、value、checked、selected、disabled等

注意:class属性不能采用这种方式,读取class属性时需要使用 元素.className

value值:就是输入文本框中的内容,要修改value值 element.value = "~~";

var btn03 = document.getElementById("btn03");btn03.onclick = function () {var inputs = document.getElementsByName("gender");//alert(inputs.length);for (var i = 0; i < inputs.length; i++) {//alert(inputs[i].innerHTML);// alert(inputs[i].value);alert(inputs[i].className);}};

3.2.4、getElementsByClassName()

通过class属性获取一组元素节点对象 (不支持IE8及以下浏览器)

var btn04 = document.getElementById("btn04");btn04.onclick = function () {var classs = document.getElementsByClassName("inner");for (var i = 0; i < classs.length; i++) {alert(classs[i].className);}};

3.2.5、childNodes、children

返回父元素下的所有子节点

(1)、childNodes属性会获取包括文本节点在内的所有节点,DOM标准,标签间的空白也会被当成文本节点

(2)、children属性可以获取当前元素的所有子元素,不包括空白文档了

3.2.6、firstChild、firstElementChild

返回父元素下的第一个子节点

(1)、firstChild 第一个子节点(包括空白的文本节点)

(2)、firstElementChild 获取当前元素的第一个子元素

3.2.7、返回某元素的父节点

语法:某元素.parentNode

3.2.8、返回某元素的前/后一个兄弟节点

(1)、 previousSibling [ˈpriːviəs] ['sibliŋ] 返回前一个兄弟节点 也有可能获取到空白的文本

(2)、 previousElementSibling 返回前一个兄弟元素,不包括空白文本,注意:不支持ie8及以下的浏览器

(3)、 nextSibling返回下一个兄弟节点 也有可能获取到空白的文本

(4)、 nextElementSibling 返回下一个兄弟元素,不包括空白文本,注意:不支持ie8及以下的浏览器

var div = document.querySelector(".box1 div")
var div = document.querySelector(".box1")
var div=document.querySelectorAll(".box1")

3.2.9、获取body标签

//方法一
var body=document.getElementsByTagName("body")[0];
//方法二
var body = document.body

3.2.10、获取html根标签

var html = document.documentElement;

3.2.11、获取页面中所有的元素

 //第一种方式
var all=document.all;
//第二种方式
var all = document.getElementsByTagName("*")

3.2.12、document.querySelector()

-需要一个选择器的字符串作为参数,可以根据一个css选择器来查询一个元素节点对象

-该方法总会返回唯一的元素,如果满足条件的元素是多个,那么它只会返回第一个

-IE8以上的都适用

3.2.13、document.querySelectorAll()

-该方法和qureySelector()用法类似,不同的是它将会将符合条件的所有元素封装到一个伪数组中返回
-即使符合条件的元素只有一个,它也会返回数组
123var div = document.querySelector(".box1 div")var div = document.querySelector(".box1")var div=document.querySelectorAll(".box1")

课堂小练习:
1、分时显示不同图片,显示不同问候语
根据不同时间、页面显示不同的图片、同时显示不同的问候语。上午时间打开页面,显示上午好,显示上午的图片;下午显示下午的,晚上显示晚上的
2、防小米显示密码:点击按钮将密码框切换为文本框,并可以查看密码明文

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/34261.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【深度学习基础之Scikit-learn库3】Scikit-learn 库提供了丰富的功能,包括数据预处理、特征选择、模型训练与评估....

【深度学习基础之Scikit-learn库3】Scikit-learn 库提供了丰富的功能&#xff0c;包括数据预处理、特征选择、模型训练与评估… 【深度学习基础之Scikit-learn库3】Scikit-learn 库提供了丰富的功能&#xff0c;包括数据预处理、特征选择、模型训练与评估… 文章目录 【深度学…

【Calibre-Web】Calibre-Web服务器安装详细步骤(个人搭建自用的电子书网站,docker-compose安装)

文章目录 一、Calibre-Web和Calibre的区别是什么&#xff1f;使用场景分别是什么&#xff1f;二、服务器安装docker和docker-compose三、服务器安装Calibre-Web步骤1、安装完成后的目录结构2、安装步骤3、初始配置4、启动上传 四、安装Calibre五、docker-compose常用命令 最近想…

【Canvas与图标】乡土风金属铝边立方红黄底黑字图像处理图标

【成图】 120*120图标&#xff1a; 大小图&#xff1a; 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>金属铝边立方红黄底黑…

vxe-table 键盘操作,设置按键编辑方式,支持覆盖方式与追加方式

vxe-table 全键盘操作&#xff0c;按键编辑方式设置&#xff0c;覆盖方式与追加方式&#xff1b; 通过 keyboard-config.editMode 设置按键编辑方式&#xff1b;支持覆盖方式编辑和追加方式编辑 安装 npm install vxe-pc-ui4.3.15 vxe-table4.9.15// ... import VxeUI from v…

ros2人脸检测

第一步&#xff1a; 首先在工作空间/src下创建数据结构目录service_interfaces ros2 pkg create service_interfaces --build-type ament_cmake 然后再创建一个srv目录 在里面创建FaceDetect.srv&#xff08;注意&#xff0c;首字母要大写&#xff09; sensor_msgs/Image …

Alogrithm:巴斯卡三角形

巴斯卡三角形&#xff08;Pascals Triangle&#xff09;是一个由数字排列成的三角形&#xff0c;每一行的数字是由前一行的两个相邻数字相加得到的。巴斯卡三角形的每一行对应着二项式展开式的系数。具体如下图所示&#xff1a; 巴斯卡三角形的性质 第 0 行只有一个数字 1。第 …

为什么使用3DMAX插件会出现系统崩溃?

使用3DMAX插件时出现系统崩溃&#xff0c;可能涉及多个方面的原因。以下是一些主要的原因及相应的解决方案&#xff1a; 一、插件兼容性问题 版本不兼容&#xff1a; 旧版插件可能无法与最新版本的3DMAX完全兼容&#xff0c;导致系统崩溃。解决方案&#xff1a;更新插件至最新…

【LeetCode刷题之路】64.最小路径和 (动态规划入门)

LeetCode刷题记录 &#x1f310; 我的博客主页&#xff1a;iiiiiankor&#x1f3af; 如果你觉得我的内容对你有帮助&#xff0c;不妨点个赞&#x1f44d;、留个评论✍&#xff0c;或者收藏⭐&#xff0c;让我们一起进步&#xff01;&#x1f4dd; 专栏系列&#xff1a;LeetCode…

【前端学习笔记】Vue2基础

1.介绍 Vue 是一套用来动态构建用户界面的渐进式JavaScript框架 构建用户界面&#xff1a;把数据通过某种办法变成用户界面渐进式&#xff1a;Vue可以自底向上逐层的应用&#xff0c;简单应用只需要一个轻量小巧的核心库&#xff0c;复杂应用可以引入各式各样的Vue插件遵循MV…

【在Linux世界中追寻伟大的One Piece】HTTP cookie

目录 1 -> 引入HTTP cookie 1.1 -> 定义 1.2 -> 工作原理 1.3 -> 分类 1.4 -> 安全性 2 -> 认识cookie 2.1 -> 基本格式 2.2 -> GMT vs UTC 3 -> cookie的生命周期 3.1 -> 安全性考虑 3.2 -> 安全测试cookie 3.2.1 -> 测试co…

Echarts使用平面方法绘制三维立体柱状图表

目录 一、准备工作 1.下载引入ECharts库 2.创建容器 二、绘制基本柱状 三、绘制立体柱状方法一 1.定义立方体形状 2.注册立方体形状 3.配置custom系列 4.设置数据 5.渲染图表 四、绘制立体柱状方法二 1.画前知识 2.计算坐标renderItem 函数 &#xff08;1&#x…

考研信息查询系统|Java|SSM|VUE| 前后端分离

【重要1⃣️】前后端源码万字文档部署文档 【包含内容】 【一】项目提供非常完整的源码注释 【二】相关技术栈文档 【三】源码讲解视频 【其它服务】 【一】可以提供远程部署安装&#xff0c;包扩环境 【二】提供软件相关的安装包 【…

[高阶数据结构八] B+树和索引原理深度解析

1.前言 B树并不常用,就是因为有B树的存在. MySQL的索引底层其实就是使用了B树,但是B树和索引都是在了解了B树之后才深度学习的&#xff0c;如果你对于B树海一无所知的话&#xff0c;请阅读下面这篇文章。 [高阶数据结构三] B-树详解_b-树csdn-CSDN博客 本章重点&#xff1a; …

Gitee配置以及如何将本地项目提交到远程仓库

文章目录 准备远程仓库配置注册新建仓库 配置git 生成ssh&#xff0c;输入以下命令&#xff0c;然后连敲三次回车键配置公钥本地代码上传 准备 1.本地下载git 2.注册远程仓库账号 远程仓库配置 注册 官网&#xff1a;https://gitee.com 完成注册 新建仓库 头像->设置-…

圣桥ERP queryForString.dwr SQL注入漏洞复现

0x01 产品描述: 杭州圣乔科技有限公司主要研发全套工业企业ERP系列软件产品,现在公司已经形成ERP 软件、OA办公管理、等四大系列二十小类软件产品。致力于为政府、教育、医疗卫生、文化事业、公共事业(电、水、气等)、交通、住建、应急、金融、电信运营商、企业等用户提供专…

基于MFC框架用C++做一个记账本

目录 一、前言 二、主要功能和技术点 1.主要功能 2.主要技术点 三、准备工作 1.SQLite数据库操作工具 2.SqLiteCpp第三方库 3.安装office导入Excel需要的接口 3.1具体步骤 四、主界面 1.自定义窗口背景 1.1消息映射 1.2选择背景图片 1.3绘制背景 1.4静态控件透明…

qemu搭建aarch64

qemu工具搭建aarch64系统 下载准备 下载qemu: https://qemu.weilnetz.de/w64/2022/qemu-w64-setup-20220831.exe 下载固件&#xff1a;https://publishing-ie-linaro-org.s3.amazonaws.com/releases/components/kernel/uefi-linaro/16.02/release/qemu64/QEMU_EFI.fd?Signat…

Zookeeper3.6.3集群安装

Zookeeper3.6.3三节点集群安装 为保证集群高可用&#xff0c;Zookeeper 集群的节点数最好是奇数&#xff0c;最少有三个节点&#xff0c;所以这里搭建一个三个节点的集群。(在一个节点模拟三节点&#xff0c;真实的三节点把ip替换一下即可&#xff0c;按照hadoop案件把网络打通…

下一代 RAG 技术来了!微软正式开源 GraphRAG

省流总结 优点&#xff1a;检索准确度高 缺点&#xff1a;单个19w字构建用时4分30s、gpt4 token花费12美元 概述 7 月 2 日&#xff0c;微软开源了 GraphRAG&#xff0c;一种基于图的检索增强生成 (RAG) 方法&#xff0c;可以对私有或以前未见过的数据集进行问答。在 GitHub…

MySQL索引(四):字符串索引

前缀索引 MySQL是支持前缀索引的&#xff0c; 也就是说&#xff0c; 你可以定义字符串的一部分作为索引。 默认地&#xff0c;如果你创建索引的语句不指定前缀长度&#xff0c; 那么索引就会包含整个字符串。 使用前缀索引的优缺点&#xff1a; 1&#xff09;优点&#xff1a…