JavaScript的Web api接口

news2024/11/25 15:27:26

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');
   //此时只会选中第一个div
    console.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(){
            //点一下就变成了yes
            div.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');//选中div
        console.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');//选中div
        let 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)先获取到输入框中的value
            let 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.coloradmin.cn/o/48542.html

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

相关文章

【附源码】计算机毕业设计JAVA住房公积金筹集子系统的网站系统

【附源码】计算机毕业设计JAVA住房公积金筹集子系统的网站系统 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xf…

3D漫游:所见即所得的形式,构建线上数字展厅

企业在数字化转型的大环境下&#xff0c;较为常用的当属数字展厅了&#xff0c;数字展厅能够为企业、行业协会、展销基地以及体验中心助力&#xff0c;以所见即所得的形式构建线上数字空间&#xff0c;满足企业的数字化展示和数字化营销。3D漫游&#xff0c;更加沉浸式的三维空…

使用 Hibernate Envers 进行实体审计

业务应用程序中的常见要求是在特定数据更改时存储版本控制信息;当某事发生变化时&#xff0c;谁改变了它&#xff0c;改变了什么。在这篇博文中&#xff0c;我们将介绍Hibernate Envers&#xff0c;它是Hibernate JPA库的一个组件&#xff0c;它为实体类提供了一个简单的审计/版…

【Linux网络配置实战】服务器Network静态路由配置

【Linux网络配置实战】服务器Network静态路由配置一、环境介绍1.环境规划2.实验目的二、检查各节点IP地址1.检查server01服务器上2.检查server02服务器网卡3.检查route01上的网卡三、在route01上启动IP包转发四、查看当前两节点互通情况1.查看server01和server02连通状态2.查看…

新手小白可以做什么互联网项目,副业项目应该怎么选择

现在网上的信息这么冗杂&#xff0c;有没有可靠的副业项目呢&#xff1f;怎样才能找到适合自己的副业呢&#xff1f; 说实话&#xff0c;在网上找副业并不难&#xff0c;搜索一下就会出来很多&#xff0c;但新手小白不知道如何选择&#xff0c;导致焦虑&#xff0c;一个重要的…

helm2.0安装及部署

一、helm简介 Helm是Deis (https://deis.com/) 开发的一个用于kubernetes的包管理器。每个包称为一个Chart&#xff0c;一个Chart是一个目录&#xff08;一般情况下会将目录进行打包压缩&#xff0c;形成name-version.tgz格式的单一文件&#xff0c;方便传输和存储&#xff09…

Linux 如何设置代理

安装部署 clash 是一款用 Go 语言开发的软件&#xff0c;所以我可以直接下载预编译的版本进行部署。 下载地址&#xff1a;https://github.com/Dreamacro/clash/releases/download/v1.8.0/clash-linux-amd64-v1.8.0.gz软件的作者提供了多种架构下预编译的二进制文件&#xff0…

67 - 经典问题解析五(指针的判别 构造中的异常)

---- 整理自狄泰软件唐佐林老师课程 1. 问题一 编写程序判断一个变量是不是指针&#xff1f; 1.1 指针的判别 C中仍然支持C语言中的可变参数函数C编译器的 匹配调用 优先级&#xff1a;重载函数 > 函数模板 > 变参函数 #include <iostream> #include <strin…

16-JavaSE基础巩固项目:拼图小游戏

阶段项目-拼图小游戏 一、项目介绍 1、目的 锻炼逻辑思维能力&#xff0c;让我们知道前面学习的知识点在实际开发中的应用场景。 1、为了学习一个新知识&#xff1a;GUI GUI全称&#xff1a;Graphical User Interface&#xff08;又称图形用户接口&#xff09;是指采用图形化…

三维地质建模数据处理

三维地质建模计算在地质工程、地球物理、矿产勘查等领域获得了广泛的应用&#xff0c;常用软件包括GOCAD、Surpac、XModel、DMine等。通过三维地质建模&#xff0c;既可以表达空间几何对象&#xff0c;也可以表现空间属性分布&#xff0c;进而实现地下三维空间可视化、地质解释…

win11 L2TP连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到了一个处理错误

连接公司内网遇到的问题。。。。修改了&#xff08;不是翻墙&#xff0c;审核一下&#xff09; 在所有情况之前先尝试用手机热点试一下&#xff0c;排除网络问题&#xff0c; 今天遇到就移动的热点WiFi登不上公司内网&#xff0c;电信联通都行 所以先试试换个运营商热点看看…

springboot项结构分析

三. SpringBoot 结构 3.1.SpringBoot 工作原理 Spring boot应用程序采用各种Starters启动器,入口类是包含SpringBootApplication注解和main方法的类,然后使用ComponentScan注解自动扫描项目中的所有组件,并且Spring Boot会根据EnableAutoConfiguration注解将项目中的依赖项自…

redis基础1——发展历程+源码安装及配置+基本常识

文章目录一、NOSQL概述1.1 单机Mysql的演进1.2 什么是Nosql1.3 Nosql的四大分类1.3.1 KV键值对型1.3.2 文档型数据库&#xff08;bson格式&#xff0c;和json一样&#xff09;1.3.3 列存储数据库1.3.4 图数据库二、redis安装与配置2.1 redis概述2.2 Windows安装2.2.1 安装至win…

【项目实战:核酸检测平台】第四章 冲锋陷阵

项目实战&#xff1a;核酸检测平台第四章 冲锋陷阵 摘要&#xff1a;战争&#xff0c;冲在最前面的永远是最危险的人群&#xff0c;新冠之战&#xff0c;冲在最前的则是医护人员、防疫工作者。 核酸检测平台的采集人员APP做为先头部队的重要武器&#xff0c;一定要做的好用、…

JVM之运行时数据区 PC、虚拟机栈、本地方法栈

JVM之运行时数据区 PC、虚拟机栈、本地方法栈PC寄存器线程回顾寄存器实践面试使用PC寄存器存储字节码指令地址有什么用&#xff1f;为什么使用PC寄存器记录当前线程的执行地址PC寄存器为什么会被设定为线程私有虚拟机栈虚拟机栈出现背景简介栈可能出现的异常栈中存储着什么运行…

二、【redux】redux 完整版求和Demo

文章目录1、添加count_action.js1.1、项目结构变化1.2、CODE1.2.1、count_action.js1.2.2、Count_Redux.jsx2、添加constant.js2.1、项目结构变化2.2、CODE2.2.1、constant.js2.2.2、count_action.js2.2.3、count_reducer.js本示例补全 上一章 redux mini版示例&#xff0c;使用…

Codeforces Round #721 (Div. 2) C. Sequence Pair Weight

翻译&#xff1a; 序列的权值定义为具有相同值(&#x1d44e;&#x1d456;&#x1d44e;&#x1d457;)的无序索引对(&#x1d456;&#xff0c;&#x1d457;)(这里&#x1d456;<&#x1d457;)的数量。例如&#xff0c;序列&#x1d44e;[1,1,2,2,1]的权值为4。具有相同…

5-UI自动化-三大切换,iframe如何定位,窗口新开、alert弹窗如何进行元素定位

5-UI自动化-三大切换&#xff0c;iframe如何定位&#xff0c;窗口新开、alert弹窗如何进行元素定位新开一个窗口如何定位元素switch_to方法iframe定位元素alert弹窗如何定位元素上篇介绍4-UI自动化-selenium三大等待操作 web测试过程中有没有遇到以下问题&#xff1a; 1、测试…

中概股回暖,B站打开向上通道

“回来了&#xff0c;我感觉他们都回来了。”周星驰《少林足球》中这句经典台词&#xff0c;最近成为了中概股投资者的口头禅。 财报季临近尾声&#xff0c;好消息已经层出不穷。中概互联网指数KWEB在11月的涨幅超过30%&#xff0c;不少个股从低位大幅反弹&#xff0c;其中就包…

C/C++家族族谱管理系统

C/C家族族谱管理系统 课题名称: 家族族谱管理 主要目标: 通过训练&#xff0c;强化学生对树结构、二叉树结构的表示及操作算法的掌握和灵活运用 3.具体要求: 要求设计实现具有下列功能的家谱管理系统: (1) 输入文件以存放最初家谱中各成员的信息&#xff0c;成员的信息中…