JavaScript的Web api接口

news/2024/5/3 18:28:45/文章来源:https://blog.csdn.net/m0_60354608/article/details/128115148

JavaScript的Web api

文章目录

  • JavaScript的Web api
    • 选中元素
    • 事件
    • 操作元素
      • 获取/元素内容
      • 获取/修改元素属性
      • 获取/修改表单元素属性
        • 实现一个显示/隐藏 密码的功能
        • 实现一个加减计算器
        • 复选框全选/全不选
      • 获取/修改样式属性
        • 点击文字放大字体
        • 实现白天模式与夜间模式的切换
      • 操作节点
        • 新增节点
        • 删除节点
    • 猜数字练习

之前学过了一些JS的基础语法,但是还是不能写出一个页面的动态效果所以此时就有必要学习浏览器给JS提供的api

网页是运行在浏览器上的,学习js最大的目的就是能够实行与用户交互,进一步操作页面上的内容.这些都要使用浏览器的api

在Web api 中,有很多的api , BOM和DOM只是其中的一部分,还有能操作多媒体的api, 还有能操作画板的api…

此处的重点是DOM(Document Operation Model 文档操作模型)来操作页面

要想深入全面的了解相关的api , 就可以去MDN上搜索相关的内容,很时候查阅 MDN

通过使用DOM, 可以将HTML页面上的每个标签, 都对应成js中的一个对象,通过这个对象就能获取/修改标签的内容和属性

简而言之,DOM api就是用来操作页面

DOM api也是有很多,此处也只是介绍一小部分

选中元素

<body><div class="one">hello</div><script>//querySelector的参数是一种CSS选择器//可以使用前面学过的任意一种选择器,来选中元素// let div = document.querySelector('div');//标签选择器let div2 = document.querySelector('.one');//类选择器console.log(div2);//dir方法能够将对象 以 元素的形式打印出来console.dir(div2);</script>

image-20221103200404912

要是有多个相同名字,document.querySelector就会选中第一个

<body><div>hello1</div><div>hello2</div><div>hello3</div><script>let div = document.querySelector('div');//此时只会选中第一个divconsole.log(div);console.dir(div);</script></body>

image-20221103201021796

要是想全部选中,就要使用document.querySelectorAll() 选中所有

image-20221103201231736

事件

事件是与用户密切相关的,用户在浏览器上,点击鼠标,滑动滚轮, 调整窗口的位置…这些都是事件

用户针对浏览器进行的操作,都会由浏览器产生对应的"事件"

我们不知道用户什么时候会进行操作,所以只能事先做准备好代码,针对不同的事件进行处理

<body><div>hello1</div><script>let div = document.querySelector('div');//先选中元素console.log(div);div.onclick = function(){  //点击一下hello1,就出执打印一次"按下鼠标"console.log("按下鼠标");}</script>
</body>

image-20221103202623134

chrome控制台会默认把相同的日志给合并成一个,此时前面就会有一个数字,表示这个操作重复执行了多少次,要是不想合并,就不要勾选

image-20221103202944996

<div>hello1</div><script>let div = document.querySelector('div');console.log(div);div.onclick = function(){console.log("按下鼠标");}div.onmousemove = function(){console.log("鼠标移动");}div.onmouseenter = function(){console.log("鼠标进来了");//点一下hello1,就算作是进来}div.onmouseleave = function(){console.log("鼠标出去了");//从进来到外面(hello1以外),就算是出去了}</script>

通过以上的代码就能感知到用户进行了哪些操作

事件的三个核心要素:

  1. 事件源: 事件是从哪个元素发出来的

    事件类型: 点击,移动,按下键盘, 调整窗口

  2. 事件处理程序: 通过哪个程序/代码来进行操作的

操作元素

元素就是html标签,就是说,在js中先获取到html对象之后,再来操作其中的内容或者属性

获取/元素内容

元素内容指的是开始标签和结束标签之间夹着的东西

<div>hello1</div>//中间的hello就是元素内容

使用 innerHTML 属性来获取/修改标签内的元素内容

<div>hello</div><script>let div = document.querySelector('div');//先选中元素console.log(div.innerHTML);//使用innerHTML来获取元素内容</script>

image-20221106104805169

<div>hello</div><script>let div = document.querySelector('div');//先选中元素console.log(div.innerHTML);//使用innerHTML来获取元素内容//使用innerHTML赋值来修改元素内容div.onclick = function(){//点一下就变成了yesdiv.innerHTML = 'yes';//不仅能赋值成一个文本,还能赋值成一个html片段//div.innerHTML = '<button> 这是一个按钮 </button>';}
</script>

获取/修改元素属性

元素属性就是开始标签里面的东西,获取/修改的是开始标签中的键值对

 <img src=picture/man.png alt=""width = '200px'><script>let img = document.querySelector('img');console.log(img);//显示图片 console.log(img.src);//显示图片的具体地址img.onclick = function(){ //点一下就会修改图片地址,从而修改图片img.src = 'picture/female.png';}</script>

上面使用的函数都是没有名字的,也就是lambda表达式(匿名函数)

获取/修改表单元素属性

表单(主要是指 input 标签)的以下属性都可以通过 DOM 来修改

value: input 的值.

disabled: 禁用

checked: 复选框会使用

selected: 下拉框会使用

type: input 的类型(文本, 密码, 按钮, 文件等)

<input type="text"><button>点我获取输入内容</button><script>let input = document.querySelector('input');//选中元素let button = document.querySelector('button');button.onclick = function(){//console.log(input.innerHTML);//由于是单标签,所以没办法使用innerHTML获取到里面的内容console.log(input.value);//使用value就能获取到表单里面的值}
</script>

实现一个显示/隐藏 密码的功能

<input type="password"><button>显示密码</button><script>let input = document.querySelector('input');let button = document.querySelector('button');button.onclick = function(){if(input.type == 'password'){input.type = 'text';button.innerHTML = '隐藏密码';}else if(input.type == 'text'){input.type = 'password';button.innerHTML = '显示密码';}else{alert('格式错误');}}</script>        	     

实现一个加减计算器

	<input type="text" value="0"><button id ="add">+</button><button id ="minus">-</button><script>let input = document.querySelector('input');let addBtn = document.querySelector('#add');//使用querySelector按照id选择器来选中元素let minusBtn = document.querySelector('#minus');addBtn.onclick = function(){let oldValue = parseInt(input.value);//将当前的值转换成整数//想要转换成整数,还有别的方法 : 在input.value前面加上+,就说明是正数,就变成了整数oldValue +=1;   input.value = oldValue;}minusBtn.onclick = function(){let oldValue = parseInt(input.value);oldValue -= 1;input.value = oldValue;}</script>        	             

复选框全选/全不选

点击"我全都要",就会将上面的几个选项都选上,取消全选,之前选中的选项都取消

<div><input type="checkbox" class ="hero">闪电侠</div><div><input type="checkbox" class ="hero">蝙蝠侠</div><div><input type="checkbox" class ="hero">海王</div><div><input type="checkbox" class ="all">我全都要</div><script>//按照class选择器来选中let heros  = document.querySelectorAll('.hero');//有多个hero,所以heros是一个数组let all  = document.querySelector('.all');all.onclick = function(){for(let i = 0; i <heros.length; i++){heros[i].checked = all.checked;}}</script>        	                    

获取/修改样式属性

点击文字放大字体

<div  style="font-size: 10px">闪电侠</div><script>let div =document.querySelector('div');//选中元素console.log(div);div.onclick = function(){let oldValue = div.style.fontSize;//获取到fontSize的初始值oldValue = parseInt(oldValue);//将初始值变成整数oldValue += 10;//设置样式的时候,一定要加上单位div.style.fontSize = oldValue + 'px';</script>        	                                

实现白天模式与夜间模式的切换

	<style> .light{color: black;background-color: white;}.dark{color: white;background-color: black;}/* <!-- 但是这样子只有文字部分是夜间模式,要将整个页面都做成夜间模式,按照父类依次进行100%设置 --> */div{height:100%;}body{height: 100%;}head{height: 100%;}html{height: 100%;}</style><div class = "light">这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话这是很长的一段话</div><script>let status = document.querySelector('div');status.onclick = function(){//点击文字就会切换模式if(status.className == 'light'){status.className = 'dark';}else if(status.className == 'dark'){status.className = 'light';}else{alert('class 错误');}}</script>        	                                        

操作节点

新增节点

新增节点主要是两个步骤:

  1. 先创建出元素 createElement()
  2. 将新元素加入到dom树上 appendChild()
	<div class = 'parent'><div>100</div><div>200</div><div>300</div></div><script>let div = document.querySelector('parent');//选中divconsole.log(div);let childDiv = document.createElement('div');//创建出一个新的节点childDiv.innerHTML = '400';//赋值div.appendChild(childDiv);//加入到div中</script>        	                                                

删除节点

removeChild()

	<div class = 'parent'><div>100</div><div>200</div><div class = 'toDelete'>300</div></div><script>let div = document.querySelector('div');//选中divlet todelete = document.querySelector('.toDelete');div.removeChild(todelete);</script>      

猜数字练习

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>guessNums</title>
</head><body><h2>请输入你要猜的数字</h2><input type="text"><br><br><div>结果是: <span id = "result"></span></div><div>当前已经猜的次数 : <span id = 'guessCount'>0</span></div><br><button >猜一次</button><br><script>    //1.先选中元素let input = document.querySelector('input');let result = document.querySelector('#result');let guessCount = document.querySelector('#guessCount');let button = document.querySelector('button');//2.生成一个1-100的随机数//Math.random()生成的是[0,1)的数字let toGuess = parseInt(Math.random()*100+1);//console.log(Guess);控制台上显示数字//3.给"猜"这个按钮加上 点击 事件button.onclick = function(){//a)先获取到输入框中的valuelet value = parseInt(input.value);//b)加个value与正确答案进行对比if(value < toGuess){result.innerHTML = '猜小了';}else if(value > toGuess){result.innerHTML = '猜大了'}else{result.innerHTML = '恭喜你,猜对了!'}//c)每点击一次提交,猜的次数就加一let oldguessCount = parseInt(guessCount.innerHTML);guessCount.innerHTML = oldguessCount += 1;}</script>
</body>
</html>

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

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

相关文章

02_openstack私有云部署

目录 一、环境准备 1、准备服务器 2、主机名与域名配置 3、yum仓库配置 4、配置时间同步 二、安装Openstack与Nova依赖环境 1、Nova依赖软件包安装 2、Openstack依赖软件包安装 三、搭建私有云 1、环境检查 2、配置应答文件answer.ini 一、环境准备 1、准备服务器 …

Metabase学习教程:仪表盘-8

仪表板中的Markdown很有趣 如何在仪表板中使用Markdown以获得乐趣和有益。 开发有效仪表板通常包括为人们提供上下文&#xff0c;让他们了解计算是如何存在或为什么存在的。虽然精确的标题、描述和带标签的轴可以在很大程度上澄清可视化&#xff0c;但Metabase还允许您向仪表…

Python矩阵乘法 二重循环实现 + 列表推式

这是python 矩阵乘法的简单例子 col 2 row 2 a [[1, 2], [3, 4]] b [[5, 6], [7, 8]] c [[0, 0], [0, 0]] “”" a b c 二维矩阵初始化 c [[0 for col in range(col)] for row in range(row)] a [[0 for col in range(col)] for row in range(row)] b [[0 for c…

2022最新鸽哒IM即时通讯系统源码 带安卓、苹果、PC端(全开源)+部署教程

提示&#xff1a;即时通讯&#xff0c;纯原生开发&#xff0c;各种功能应有尽有 内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 提示&#xff1a;即时通讯&#xff0c;纯原生开发&#xff0c;各种功能应有尽有 鸽哒是一款类似于v的即时…

有序数组转换为二叉查找树

问题描述 给定一个整数数组&#xff0c;其元素为先序排列&#xff0c;将其转换为高度平衡的二叉查找树。 示例 示例1 Input: nums [-10,-3,0,5,9] Output: [0,-3,9,-10,null,5] Explanation: [0,-10,5,null,-3,null,9] is also accepted: 示例2 Input: nums [1,3] Output: …

Web3.0带来天翻地覆的变化?全面科普!所谓的Web3.0到底是什么?

Web3.0在2021年尾声突然蹿红&#xff0c;在美国国会的听证会里&#xff0c;一句“我们如何确保web3革命发生在美国”引发了大家对于Web3.0的关注&#xff0c;而后马斯克一篇内容为“有人看过web3.0吗? 我没有找到”的推文&#xff0c;将关于Web3.0的讨论推向了高潮。 甚至于这…

Scala集合习题001

熟话说的好&#xff1a;”纸上得来终觉浅&#xff0c;绝知此事要躬行“&#xff0c;所以现在我就以下的习题&#xff0c;来巩固 之前我学习的几个常见集合函数&#xff0c;加深理解。 目录 练习题 1&#xff1a;计算分组后的list 分别对应的长度&#xff0c;和累加值 练习题…

eMagin:当月产百万片时,4K MicroOLED成本将不是问题

在今年2022 SID显示周期间&#xff0c;Micro OLED微显示模组厂商eMagin曾展示一款专为超短焦VR头显开发的4K Micro OLED微显示屏&#xff0c;有趣的是&#xff0c;该显示屏连接的主板上印有STEAMBOAT字样&#xff0c;让人不禁怀疑它与Valve之间是否存在某种联系。甚至有猜测认为…

Vue 3的高颜值UI组件库

Vue 3.0 已经发布两年多的时间&#xff0c;今年 2 月 Vue 3.0 也正式成为新的默认版本。今天就来分享 7 个适用于 Vue 3 的高颜值 UI 组件库&#xff01; Element Plus Element Plus 是一套由饿了么开源出品的为开发者、设计师和产品经理准备的基于 Vue 3.0 的组件库。Elemen…

xcode swift 单元测试 test

XCTest是苹果官方的测试框架&#xff0c;是基于OCUnit的传统测试框架&#xff0c;测试编写起来非常简单。 测试案例一 创建一个单元测试 func testExample() throws {let personID:String "0123456789"let count personID.countXCTAssert(count < 10, "I…

分布式文件系统

0.0 分布式文件系统 一般做法&#xff1a; 传统的模式是我们通过tomcat或者nginx&#xff0c;存放静态资源文件。 存在的问题&#xff1a; 单个节点会出现存不下的情况&#xff0c;需要多个节点。 分布式文件系统 需要一个系统来管理多个计算机节点上的文件数据&#xff…

[附源码]计算机毕业设计springboot基于web的建设科技项目申报管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

word 中添加图片目录、内部链接

目录1. 图片、表格添加目录1.1 插入题注1.2 添加目录2. 添加内部链接1. 图片、表格添加目录 1.1 插入题注 只有正确地插入题注&#xff0c;图表目录才能快速生成。 &#xff08;1&#xff09;两个方法调用“题注”功能&#xff08;任选1个&#xff09; 方法一&#xff1a;在菜…

[附源码]SSM计算机毕业设计医院挂号系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Oracle表空间详细介绍

表空间概述 Oracle的表空间属于Oracle中的存储结构&#xff0c;是一种用于存储数据库对象(如&#xff1a;数据文件)的逻辑空间&#xff0c;是Oracle中信息存储的最大逻辑单元&#xff0c;其下还包含有段、区、数据块等逻辑数据类型。表空间是在数据库中开辟的一个空间&#xf…

Cpp知识点系列-字符串

前言 记录一些对字符串的理解。 接下来我所说的都是依赖于头文件<string>的。 理论 什么是字符串 字符串实际上是使用 null 字符 \0 终止的一维字符数组。因此&#xff0c;一个以 null 结尾的字符串&#xff0c;包含了组成字符串的字符。 string与cstring有什么区别…

Linux多线程C++版(七) 线程互斥方式-----读写锁

目录1.读写锁基本概念2.读写锁创建和销毁3.读写锁的加锁和解锁4.代码了解读写锁5.线程互斥案例---ATM取钱--使用读写锁1.读写锁基本概念 线程使用互斥锁缺乏读并发性当读操作比较多&#xff0c;写操作比较少时&#xff0c;可使用读写锁提高线程读并发性读写锁数据类型 pthread…

专访D-Wave CEO:量子计算的过去、现在和未来

&#xff08;图片来源&#xff1a;网络&#xff09; 量子计算可能成为一项颠覆性技术&#xff1a;它建立在听起来非常奇特的物理学基础上&#xff0c;并有望以前所未有的速度和效率解决某些类别的问题。一些人认为&#xff0c;目前在量子计算领域的承诺太多&#xff0c;交付却不…

FPGA书籍

1、Xilinx FPGA 权威设计指南 本书系统地介绍了Xilinx新一代集成开发环境Vivado 2018的设计方法、设计流程和具体实现。 全书共11章&#xff0c;内容包括Xilinx新一代UltraScale结构、Vivado集成设计环境导论、Vivado工程模式基本设计实现、Vivado非工程模式基本设计实现、创建…

Linux centos7.6 安装elasticsearch8.x (es8) 教程

系列-Linux centos7.6 安装elasticsearch8.x (es8) 教程 Linux centos7.6 安装elasticsearch8.x (es8) 教程_言之有李LAX的博客-CSDN博客 系列-linux安装elasticsearch-head &#xff08;es可视化界面&#xff09; linux安装elasticsearch-head &#xff08;es可视化界面&am…