JavaScript之DOM操作

第一章 API介绍

        ​API是一种事先定义好的函数,用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节。

        ​Web API接口:浏览器提供的一系列操作浏览器功能和页面元素的API(BOM和DOM)

第二章 DOM(文档对象模型)

2.1基本概念

        DOM:(Document Object Model)文档对象模型。当网页被加载时,浏览器会创建文档对象模型。通过这个对象模型,JavaScript 获得创建动态 HTML 的所有力量:

  • JavaScript 能改变页面中的所有 HTML 元素
  • JavaScript 能改变页面中的所有 HTML 属性
  • JavaScript 能改变页面中的所有 CSS 样式
  • JavaScript 能删除已有的 HTML 元素和属性
  • JavaScript 能添加新的 HTML 元素和属性
  • JavaScript 能对页面中所有已有的 HTML 事件作出反应
  • JavaScript 能在页面中创建新的 HTML

        严格的说,DOM并不是javascript,通常说用javascript来操控DOM。

2.2节点概念

​        节点(Node)是DOM中最小的组成单位,文档的树形结构(DOM树),就是由各种不同类型的节点组成。

父节点关系(parentNode):直接的那个上级节点 
子节点关系(childNodes):直接的下级节点 
同级节点关系(sibling):拥有同一个父节点的节点

        常用的dom操作概括为:增、删、改、查、绑定事件、标签属性操作。

2.3查找节点(查找HTML元素)

1、通过id属性查找

document.getElementById('id属性值');

2、通过name属性查找

document.getElementBysName('name属性值');  //返回值是一个类数组对象

3、通过标签名查找

document.getElementBysTagName('标签名');   //返回值是一个类数组对象

4、通过class属性查找

document.getElementBysClassName('class属性值');    //返回值是一个类数组对象

5、querySelector()、querySelectorAll()

document.querySelector('.class属性值');
document.querySelectorAll('.class属性值'); //返回值是一个类数组对象

代码示例:

第三章 事件

3.1 什么事件

        事件是一种触发-响应机制,是用户发出一种行为浏览器通过感知用户行为而触发的一种程序机制。

事件三要素:

  • 事件源:(被)触发事件的元素
  • 事件类型:事件的触发方式(例如鼠标点击或键盘点击)
  • 事件处理程序:事件触发后要执行的代码(函数形式)

3.2事件绑定

1、行内绑定:在浏HTML标签中绑定事件

//方法一:
    <标签名 属性=属性值 on事件类型="事件处理程序">
    //在这里"on事件类型"就相当于标签中属性
//方法二:
     <body>
        <标签名 属性=属性值 on事件类型="函数名()">
     </body>
    <script>
        function 函数名(){
            //事件处理程序
        }
    </script>

代码示例:

2、动态绑定:先获取标签,然后绑定事件

//方案一:拆分式
    //函数处理机制
    function 函数名(){
        //函数体
    }
    //获取标签(有很多种方法,这里用id属性查找举例)
    var 变量名=document.getElementById('id属性值');
    //绑定事件
    变量名.on事件类型=函数名();
​
//方案二:合并式
    查找节点(标签).on事件类型=function(){
         //函数处理程序
    }

3、事件监听

//方案一:拆分式
    //查找节点(标签)
    var 变量名=document.getElementById('id属性值');
    //绑定监听事件
    变量名.addEventListener('事件类型',function(){
        //事件处理程序
    })
//方案二:合并式
    查找节点(标签).addEventListener('事件类型',function(){
        //事件处理程序
    })

代码示例:

4、移除事件监听

查找节点(标签).removeEventListener('事件类型',函数名());

3.3 三种事件绑定的区别

        第一种 "HTML标签的on-属性",违反了HTML与JavaScript代码相分离的原则;处理函数中 this 指向的window对象;第二种 "Element节点的事件属性" 的缺点是,同一元素同一个事件只能定义一个监听函数,也就是说,如果定义两次onclick属性,后一次定义会覆盖前一次。但是处理函数中的 this 指向的选中的对象;第三种:addEventListener方法可以针对同一个元素的同一个事件,添加多个监听处理函数。处理函数中的 this 指向的也是选中的元素;

3.4事件类型

1、页面加载事件

  • load : 一个资源及其相关资源已完成加载。
<body onload="f1()" >
</body>
<script>
    function f1(){
        alert('f1');
    }
</script>

2、焦点事件

  • focus:元素获得焦点
  • blur:元素失去焦点

3、鼠标事件

  • mouseenter:指针移动到有事件监听的元素内
  • mouseover:指针移动到有事件监听的元素或者他的子元素内
  • mousemove:指针在元素内移动式持续触发
  • mousedown:在元素上按下任意鼠标按钮
  • mouseup:在元素上释放任意鼠标按键
  • click:在元素上任意按下释放鼠标键
  • dbclick:在元素上双击鼠标
  • contextmenu:右键点击
  • mouseout:指针移除元素,或者移到子元素上
  • select:文本被选中
  • copy:元素内容被拷贝时

4、键盘事件

  • keydown:按下任意按键
  • keypress:除shift、fn、capslock外任意键按住(连续触发)
  • keyup:释放任意按键

5、from表单事件

  • reset:点击重置按扭时
  • submit:点击提交按钮时

6、内容改变事件

  • change: 当内容改变且失去焦点时触发 (存储事件)input : 当内容改变时触发 (值变化事件)

3.5 事件传播

        当触发c方块的事件时,b和a的事件也随之触发,这种现象称为事件冒泡

        当一个事件发生以后,它会在不同的DOM节点之间传播,而这种传播可以分为三个阶段:第一阶段:从window对象传导到目标节点,称为 捕获阶段。第二阶段:在目标节点上触发,称为 目标阶段。第三阶段:从目标节点传导回window对象,称为 冒泡阶段

3.6改变事件传播方法:addEventListener

案例:

第四章 节点操作

4.1 节点操作

  • 创建网页元素节点,参数为网页元素标签名:document.createElement('标签名')
  • 生成网页节点的文本内容,参数为网页节点文本内容:document.createTextNode('内容')
  • 插入一个子节点,将其作为该节点的最后一个子节点:node.appendChild()
  • 判断当前节点是否有子节点,结果返回一个布尔值:node.hasChildNodes()
  • 接受一个子节点作为参数,用于从当前节点移除该子节点:node.removeChild()
  • 用于克隆一个选中的节点。node.cloneNode()
  • node.innerHTML返回该元素包含的 HTML 代码。该属性可读写,常用来设置某个节点的内容;(不属于W3C DOM规范)
  • node.innerText
  • 返回该元素包含的内容。该属性可读写

4.2节点属性

原生属性:HTML元素节点的标准属性

属性操作:

  • node.getAttribute():返回当前元素节点的指定属性。如果指定属性不存在,则返回null;
  • node.setAttribute():为当前元素节点新增属性。如果同名属性已存在node.hasAttribute()
  • ​ 返回一个布尔值,表示当前元素节点是否包含指定属性
  • node.removeAttribute():从当前元素节点移除属性

4.3 节点操作-层级关系

  • node.nextElementSibling:返回紧跟在当前节点后面的第一个同级Element节点,如果当前节点后面没有同级节点,则返回null;
  • node.previousElementSibling:返回紧跟在当前节点前面的第一个同级Element节点,如果当前节点前面没有同级节点,则返回null;
  • node.parentElement:返回当前节点的父级Element节点;
  • node.childNodes:返回一个NodeList集合,成员包括当前节点的所有子节点(注意空格回车也算)。
  • node.firstChild:返回树中节点的第一个子节点,如果节点是无子节点,则返回 null。
  • node.lastChild:返回该节点的最后一个子节点,如果该节点没有子节点则返回null

4.4 css样式设定

语法: 查找节点(标签).style.样式名称=值

 4.5 案例:利用js实现网页评论代码

    <meta charset="utf-8">
    <title></title>
    <style>
        .div1{
            width: 1200px;
            margin:0 auto;
            background: rgba(128,128,128,0.3);
        }
        span{
            color: red;
        }
    </style>
</head>
<body>
    <div class="div1">
        <div class="div2" id="div2">
            昵称:<input type="text" name="" id="name" value="">
            <p>评论内容:<textarea id="content"></textarea></p>
            <p><input type="button" id="btn" value="提交评论"></p>
        </div>
    </div>
</body>
<script type="text/javascript">
    var us=document.getElementById('name');
    var content=document.getElementById('content');
    document.getElementById('btn').onclick=function(){
        var div=document.createElement('div');
        div.innerHTML="<span>"+us.value+":</span>"+content.value+'<hr>';
        document.getElementById('div2').appendChild(div);
        us.value='';
        content.value='';
    }
</script>
</html>

第五章 事件对象

5.1 事件对象属性

  • event.bubbles:属性返回一个布尔值,表示当前事件是否会冒泡;event.eventPhase:返回一个整数值,表示事件流在传播阶段的位置
0:事件目前没有发生。1:事件目前处于捕获阶段。2:事件到达目标节点。3:事件处于冒泡阶段。
  • event.type:返回一个字符串,表示事件类型,大小写敏感;event.timeStamp:返回一个毫秒时间戳,表示事件发生的时间;
  • clientX、clientY :获取鼠标事件触发的坐标

5.2事件代理/委托

  • event.target:对事件起源目标的引用,属性返回触发事件的那个节点。
  • event.currentTarget:属性返回事件当前所在的节点,即正在执行的监听函数所绑定的那个节点。作为比较,target属性返回事件发生的节点。由于事件会在冒泡阶段向上传播到父节点,因此可以把子节点的监听函数定义在父节点上,由父节点的监听函数统一处理多个子元素的事件。这种方法叫做事件的代理也叫 事件委托 也有人称为 事件代理

5.3阻止浏览器默认行为&阻止事件传播

  • event.preventDefault():方法取消浏览器对当前事件的默认行为,
  • event.stopPropagation():方法阻止事件在DOM中继续传播,防止再触发定义在别的节点上的监听函数

第六章 浏览器对象模型

6.1对话框

  • window.alert() : 显示一个警告对话框,上面显示有指定的文本内容以及一个"确定"按钮。
  • window.prompt(): 显示一个对话框,对话框中包含一条文字信息,用来提示用户输入文字.
  • window.confirm() :方法显示一个具有一个可选消息和两个按钮(确定和取消)的模态对话框 。

6.2 浏览器控制台

  • window.console : 返回console对象的引用,该对象提供了对浏览器调试控制台的访问。
  • Console.clear() : 清空控制台。
  • Console.error() : 打印一条错误信息
  • Console.table() : 将数组或对象数据在控制台以表格形式打印
  • Console.log(): 打印字符串,使用方法比较类似C的printf、PHP的echo等格式输出

6.3 定时器

setTimeout()和clearTimeout()

在指定的毫秒数到达之后执行指定的函数,只执行一次

setInterval()和clearInterval()

定时调用的函数,可以按照给定的时间(单位毫秒)周期调用函数

5.7 location对象

window.location 只读属性,返回一个 Location对象,其中包含有关文档当前位置的信息;

URL

统一资源定位符 (Uniform Resource Locator, URL)

URL的组成:

scheme://host:port/path?query#fragmentscheme:通信协议

常用的http,ftp,maito等

host:主机

服务器(计算机)域名系统 (DNS) 主机名或 IP 地址。

port:端口号

整数,可选,省略时使用方案的默认端口,如http的默认端口为80。

path:路径

由零或多个'/'符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。

query:查询

可选,用于给动态网页传递参数,可有多个参数,用'&'符号隔开,每个参数的名和值用'='符号隔开。例如:name=zs

fragment:信息片断

字符串,锚点.

5.8 history对象

  • history.back() : 前往上一页, 用户可点击浏览器左上角的返回按钮模拟此方法
  • history.forward() : 在浏览器历史记录里前往下一页,用户可点击浏览器左上角的前进按钮模拟此方法
  • history.go() : 通过当前页面的相对位置从浏览器历史记录( 会话记录 )加载页面。比如:参数为-1的时候为上一页,参数为1的时候为下一页.

5.9 navigator对象

  • userAgent : 通过userAgent可以判断用户浏览器的类型
  • platform : 通过platform可以判断浏览器所在的系统平台类型.
  • geolocation : 位置定位对象;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

opencv-背景减除

背景减除&#xff08;Background Subtraction&#xff09;是一种用于从视频序列中提取前景对象的计算机视觉技术。该技术的主要思想是通过建模和维护场景的背景&#xff0c;从而检测出在不同时间点出现的前景对象。 OpenCV 提供了一些用于背景减除的函数&#xff0c;其中最常用…

记录ruoyi-plus-vue部署的问题

ruoyi-vue-plus5.x 后端 ruoyi-vue-plus5.x 前端 前端本地启动命令 # 克隆项目 git clone https://gitee.com/JavaLionLi/plus-ui.git# 安装依赖 npm install --registryhttps://registry.npmmirror.com# 启动服务 npm run dev# 构建生产环境 yarn build:prod # 前端访问地址…

深入学习pytorch笔记

两个重要的函数 dir()&#xff1a; 一个内置函数&#xff0c;用于列出对象的所有属性和方法 help()&#xff1a;一个内置函数&#xff0c;用于获取关于Python对象、模块、函数、类等的详细信息 Dateset类 Dataset&#xff1a;pytorch中的一个类&#xff0c;开发者在训练和…

什么是高防CDN?CDN的设计原理及应用场景是什么?

随着互联网的快速发展&#xff0c;人们对网络的速度和稳定性要求也越来越高。CDN技术作为网络优化的重要手段&#xff0c;被越来越多的企业和网站所采用。现在我为大家介绍一下CDN的设计原理以及应用场景。 一.高防CDN技术概述 高防CDN是一种应用了高级防御技术的内容分发网络…

【大数据】Docker部署HMS(Hive Metastore Service)并使用Trino访问Minio

本文参考链接置顶&#xff1a; Presto使用Docker独立运行Hive Standalone Metastore管理MinIO&#xff08;S3&#xff09;_hive minio_BigDataToAI的博客-CSDN博客 一. 背景 团队要升级大数据架构&#xff0c;需要摒弃hadoop&#xff0c;底层使用Minio做存储&#xff0c;应用…

配置mvn打包参数,不同环境使用不同的配置文件

方法一&#xff1a; 首先在/resource目录下创建各自环境的配置 要在不同的环境中使用不同的配置文件进行Maven打包&#xff0c;可以使用Maven的profiles特性和资源过滤功能。下面是配置Maven打包参数的步骤&#xff1a; 在项目的pom.xml文件中&#xff0c;添加profiles配置…

Lubuntu 23.10用户可使用LXQt 1.4桌面

导读在众多 Lubuntu 用户的要求下&#xff0c;Lubuntu 开发人员决定将 LXQt 1.4 桌面环境向后移植到最新的 Lubuntu 23.10 &#xff08;Mantic Minotaur&#xff09; 版本。 是的&#xff0c;您没看错&#xff0c;您现在可以使用官方的 Lubuntu Backports PPA&#xff08;个人软…

“java.lang.IllegalStateException: No ConfigurableListableBeanFactory set“,缺少配置

一、错误分析 做品优购项目的运营商安全登录时&#xff0c;运行项目后&#xff0c;浏览器访问模板页&#xff0c;模板页的表格无法正常显示&#xff0c;报错信息如下&#xff1a; SEVERE: StandardWrapper.Throwable java.lang.IllegalStateException: No ConfigurableLista…

window.requestAnimationFrame+localStorage+canvas实现跨窗口小球连线效果

文章目录 前言效果代码后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;前端系列文章 &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努力填补技术短板。(如果出现错误&#xff0c;感谢大家…

session、cookie的区别

前言 cookie存在于客户端&#xff08;浏览器&#xff09;&#xff0c;session存在于服务端。session的主要信息存在于服务器&#xff0c;在客户端只存放一个sessionid&#xff08;基于cookie的&#xff09;&#xff0c;每次请求&#xff0c;客户端都会自动把sessionid发送到服…

儿童在线学习系统 宝宝云幼儿园服务微信小程序的设计与实现

综合运用所学的程序设计基础、数据结构、数据库原理及应用、高级语言程序设计、面向对象程序设计、软件需求分析与建模、软件设计与体系结构、软件测试等课程知识&#xff0c;设计开发一个较实用的应用系统。 通过该设计可以巩固并提高软件工程专业学生的软件需求分析、设计、开…

css实现图片绕中心旋转,鼠标悬浮按钮炫酷展示

vue模板中代码 <div class"contentBox clearfix home"><div class"circle"><img class"in-circle" src"../../assets/img/in-circle.png" alt""><img class"out-circle" src"../../as…

【小尘送书-第十二期】计算机考研精炼1000题——助力每一个考研人成功上岸

大家好&#xff0c;我是小尘&#xff0c;欢迎你的关注&#xff01;大家可以一起交流学习&#xff01;欢迎大家在CSDN后台私信我&#xff01;一起讨论学习&#xff0c;讨论如何找到满意的工作&#xff01; &#x1f468;‍&#x1f4bb;博主主页&#xff1a;小尘要自信 &#x1…

flutter,uni-app开发调试ios

一、申请ios开发者账号 二、ios开发者配置 ios 开发者需要配置的地方 https://developer.apple.com/account/resources/certificates/list Certificates&#xff08;证书&#xff09;: 作用&#xff1a; 证书用于对应用程序和开发者进行身份验证&#xff0c;确保安全性和可…

企业数字化转型转什么?怎么转?这份攻略请收好

目录 -01-数字化转型“是什么” -02-数据驱动推动企业数字化转型 -03-企业数字化转型的行动路线图 数字化转型&#xff0c;转什么&#xff1f;怎么转&#xff1f;这些问题仍在困扰不少企业&#xff0c;也是每个企业转型升级不得不思考的重要问题。对此&#xff0c;中关村数字…

Docker Desktop 安装使用教程

一、前言 作为开发人员&#xff0c;在日常开发中&#xff0c;我们需要在本地去启动一些服务&#xff0c;如&#xff1a;redis、MySQL等&#xff0c;就需要去下载这些在本地去启动&#xff0c;操作较为繁琐。此时&#xff0c;我们可以使用Docker Desktop&#xff0c;来搭建我们需…

【SpringCloud】微服务的扩展性及其与 SOA 的区别

一、微服务的扩展性 由上一篇文章&#xff08;没看过的可点击传送阅读&#xff09;可知&#xff0c; 微服务具有极强的可扩展性&#xff0c;这些扩展性包含以下几个方面&#xff1a; 性能可扩展&#xff1a;性能无法完全实现线性扩展&#xff0c;但要尽量使用具有并发性和异步…

hive 报错return code 40000 from org.apache.hadoop.hive.ql.exec.MoveTask解决思路

参考学习 https://github.com/apache/hive/blob/2b57dd27ad61e552f93817ac69313066af6562d9/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java#L47 为啥学习error code 开发过程中遇到以下错误&#xff0c;大家觉得应该怎么办&#xff1f;从哪方面入手呢&#xff1f; 1.百…

系列二、Spring整合单元测试

一、概述 Spring中获取bean最常见的方式是通过ClassPathXmlApplicationContext 或者 AnnotationConfigApplicationContext的getBean()方式获取bean&#xff0c;那么在Spring中如何像在SpringBoot中直接一个类上添加个SpringBootTest注解&#xff0c;即可在类中注入自己想要测试…