【JAVA WEB】JavaScript(WebAPI)--DOM基本概念 获取元素 点击事件 键盘事件

目录

什么是WebAPI

DOM的基本概念

DOM是什么

DOM树

获取元素

querySelector 

querySelectorAll

事件

事件初识

基本概念

事件三要素

点击事件

键盘事件


什么是WebAPI

前端学习的 JS 分成三个大的部分

  • ECMAScript:基础语法部分
  • DOM API:操作页面结构
  • BOM API:操作浏览器

WebAPI 就包含了DOM+BOM。

DOM的基本概念

DOM是什么

DOM 全程为 Docunment Object Model

W3C标准给我们提供了一系列的函数,让我们可以操作:

  • 网页内容
  • 网页结构
  • 网页样式

DOM树

一个页面的结构是一个树型结构,称为DOM树。

重要概念:

  • 文档:一个页面就是一个文档,使用document表示
  • 元素:页面中所有的标签都称为元素,使用element表示
  • 节点:网页中所有的内容都可以称为节点(标签节点,注释节点,文本节点,属性节点),使用node表示

这些文档等概念在JS代码中对应一个个的对象。

所以才叫“文档对象模型”

获取元素

这部分工作类似于CSS选择器的功能

querySelector 

选中一个元素

//这个是HTML5新增的,IE9及以上版本才能使用

用法:var element=document.querySelector(selectors);

  • selectors包含一个或多个要匹配的选择器的DOM字符串DOMstring,该字符串必须是有效的CSS选择器字符串,如果不是,则引发SYNTAX_ERR异常
  • 表示文档中与指定的一组CSS选择器匹配的第一个元素的html元素Element对象
  • 如果需要与指定选择器匹配的所有元素的列表,则应该使用querySelectorAll()
  • 可以在任何元素上调用,不仅仅是document,调用这个方法的元素将作为本次查找的根元素

示例代码:

<body>

    <div class="box1">box1</div>

    <div class="box2">box2</div>

    <h3><span><input type="text"></span></h3>

</body>

<script>

    console.log(document.querySelector('.box1'));

    console.log(document.querySelector('h3').querySelector('span').querySelector('input'))

</script>

 

querySelectorAll

选中一组元素

 console.log(document.querySelectorAll('div'));

事件

事件初识

基本概念

JS要构建动态页面,就需要感知到用户的行为

用户对于页面的一些操作(点击,选择,修改等)都会在浏览器中产生一个个事件,被JS获取到,从而进行更复杂的交互操作

事件三要素

  1. 事件源:哪个元素触发的
  2. 事件类型:是点击,选中,还是修改
  3. 事件处理程序:进一步如何处理,往往是一个回调函数

参考手册w3school 在线教程icon-default.png?t=N7T8https://www.w3school.com.cn/

点击事件

示例:

<body>

    <input type="button" value="这是一个按钮">

</body>

<script>

    //事件源

    let button = document.querySelector('input')

    //绑定事件类型(点击事件)onclick

    //函数设定了事件处理程序

    button.οnclick=function(){

        alert("hello")

    }

</script>

键盘事件

  1. onkeydown
  2. onkeypress
  3. onkeyup

onkeydown

键盘按下时触发事件

<body>

    <input type="text">

</body>

<script>

    //事件源

    let input = document.querySelector('input')

    //绑定事件类型(点击事件)

    //函数设定了事件处理程序

    input.onkeydown = function(){

        console.log("键盘正在按下")

    }

</script>

当我们需要获取键盘输入了什么内容时可以通过event事件,如下操作:

<body>

    <input type="text">

</body>

<script>

    //事件源

    let input = document.querySelector('input')

    //绑定事件类型(点击事件)

    //函数设定了事件处理程序

    input.onkeydown = function(event){

        console.log("键盘正在按下");

        let a = event.keyCode;

        console.log(a);

        //转换成字符

        let b=String.fromCharCode(a);

        console.log(b);

    }

</script>

效果:

从上面的效果可以看出onkeydown不区分大小写

因此我们需要使用onkeypress

事件在用户按下键时(键盘)发生

<body>

    <input type="text">

</body>

<script>

    //事件源

    let input = document.querySelector('input')

    //绑定事件类型(点击事件)

    //函数设定了事件处理程序

    input.onkeypress = function(event){

        console.log("键盘正在按下");

        let a = event.keyCode;

        console.log(a);

        //转换成字符

        let b=String.fromCharCode(a);

        console.log(b);

    }

</script>

效果:可以看出onkeypress有效的显示了键盘输入内容

onkeyup

键盘松开时触发事件,下述是另一种写法,也可以如上面的方法进行编写

<body><input type="text" onkeyup="myOnkeyup()">
</body>
<script>function myOnkeyup(){console.log("按键被抬起")}
</script>

 效果

不是所有的键都会触发onkeypress或者onkeydown 事件,如shift,alt按下时并未触发,因此我们需要另一些如altKey,ctrlKey,shiftKey

示例:

<body>

    <input type="text">

</body>

<script>

    let input = document.querySelector('input')

    input.onkeydown = function(event){

        if(event.shiftKey)

        {

            alert("shift键被按下")

        }

    }

</script>

效果:

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谷歌浏览器安装扩展程序axure-chrome-extension

注&#xff1a; 文末附扩展附件&#xff1a;axure-chrome-extension_v0.7.0.crx 1、安装扩展程序axure-chrome-extension 找到axure-chrome-extension.crx&#xff0c;把axure-chrome-extension.crx后缀改为zip&#xff0c;然后解压&#xff0c;得到一个文件夹 2、打开谷歌浏览…

面试技术栈 —— 2024网易雷火暑期实习真题

面试技术栈 —— 2024网易雷火暑期实习真题 1. 最长递增子序列。2. 集中限流和单机限流你觉得哪个好&#xff1f;3. redis部署服务器配置&#xff0c;为什么不用哨兵&#xff1f;4. 讲讲分布式session的原理。5. 数据库&#xff1a;表数据量大了&#xff0c;如何分表&#xff1…

第13章 网络 Page727~728 asio定时器例子:后创建的定时器先产生到点事件

代码&#xff1a; 35行&#xff0c;42行&#xff0c;51行&#xff0c;分别构造三个对象&#xff0c; 36行&#xff0c;43行&#xff0c;52行&#xff0c;设置了三个任务peng1、peng2、peng3&#xff0c;并将任务交给io_service对象&#xff08;不需要ios的run()方法启动起来&a…

站在C/C++的肩膀速通Java面向对象

默认学过C或C&#xff0c;对变量、表达式、选择、循环都会。 运行特征 解释型语言&#xff08;JavaScript、Python等&#xff09; 源文件-(平台专属解释器)->解释器中执行编译型语言&#xff08;C、Go等&#xff09; 源文件-(平台编译器)->平台可执行文件Java 源文件-(…

Swift Combine 网络受限时从备用 URL 请求数据 从入门到精通十四

Combine 系列 Swift Combine 从入门到精通一Swift Combine 发布者订阅者操作者 从入门到精通二Swift Combine 管道 从入门到精通三Swift Combine 发布者publisher的生命周期 从入门到精通四Swift Combine 操作符operations和Subjects发布者的生命周期 从入门到精通五Swift Com…

源码推荐:hello-algo @ github

github https://github.com/krahets/hello-algo 本项目旨在创建一本开源、免费、对新手友好的数据结构与算法入门教程。全书采用动画图解&#xff0c;结构化地讲解数据结构与算法知识&#xff0c;内容清晰易懂&#xff0c;学习曲线平滑。算法源代码皆可一键运行&#xff0c;支…

[韩顺平]python笔记

AI工程师、运维工程师 python排名逐年上升&#xff0c;为什么&#xff1f; python对大数据分析、人工智能中关键的机器学习、深度学习都提供有力的支持Python支持最庞大的 代码库 &#xff0c;功能超强 数据分析&#xff1a;numpy/pandas/os 机器学习&#xff1a;tensorflow/…

第5个-模糊加载

Day 5 - Blurry Loading 1. 项目展示 2. 分析思路 变化过程 数字从 0 不断增长到 100&#xff1b;中间的百分比数字逐渐消失&#xff0c;即透明度 opacity 从 1 到 0&#xff1b;背景图片从模糊变为清晰&#xff0c;滤镜 filter.blur()的参数设置为从 30px 到 0px。 小 tips…

【Java程序设计】【C00254】基于Springboot的java学习平台(有论文)

基于Springboot的java学习平台&#xff08;有论文&#xff09;&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的学习平台 本系统分为系统功能模块、管理员功能模块、教师功能模块以及学生功能模块。 系统功能模块&#xff1a;在平台…

2024 年合并 PDF 文件的免费 PDF 合并软件榜单

合并 PDF 是当今人们寻找的最重要的功能之一。在本文中&#xff0c;您将了解前五名的 PDF 合并软件以及详细的介绍&#xff0c;以便您选择最佳的。如果您想将所有重要信息都放在一个文件中&#xff0c;而不是在不同的文件中查找&#xff0c;那么合并 PDF 文件是必要的。通过这种…

创建良好班风的重要性和意义

为什么有的班级总是充满活力&#xff0c;学生们团结友爱、学习热情高涨&#xff0c;而有的班级却显得沉闷&#xff0c;学生们缺乏动力&#xff0c;对学习毫无兴趣&#xff1f;其实&#xff0c;这背后的关键就在于班风的建设。 班风&#xff0c;简单说&#xff0c;就是一个班级…

OpenCV Mat 实例详解 二

构造函数 OpenCV Mat实例详解一中已介绍了部分OpenCV Mat构造函数&#xff0c;下面继续介绍剩余部分构造函数。 Mat (const std::vector< _Tp > &vec, bool copyDatafalse)&#xff1b; vec 包含数据的vec对象 copyData 是否拷贝数据&#xff0c;true— 拷贝数据&…