JavaScript(WebAPI) (前端)

news2024/11/29 12:42:09

文章目录

  • 前言
  • 一、WebAPI
  • 二、DOM
    • 1.选中元素
    • 2.事件
    • 3.获取/修改元素内容
    • 4.获取/修改元素属性
    • 5.获取/修改表单元素属性
    • 6.操作复选框
    • 7.获取/修改样式属性
      • ①行内样式
      • ②通过css class 指定的样式
    • 8.新增节点
    • 9.删除节点
  • 总结

前言

虽然学了一些js的语法,但是仍然无法写出页面的动态效果~~

学习浏览器给js提供的api~
网页时运行在浏览器上的,学习js最大的目的就是为了能够和用户交互,进一步的来操作页面的内容,这些都需要浏览器的api来完成

一、WebAPI

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

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

WebAPI概念是非常广泛的~
BOMDOM只是其中的一部分,还有一些操作多媒体的api(视频音频)
还有一些操作画板(可以用来画图) canvas api 等等…

以下主要介绍DOM (操作页面)

二、DOM

DOM 全称为 Document Object Model,文档对象模型
文档就是html,对象指的是js中的对象,文档对象模型(DOM)就是把HTML页面上的每个标签,都对应成js中的一个对象,通过这个对象,就能获取到标签的内容属性


DOM API 一共很多,我主要介绍其中的一小部分~

1.选中元素

进行后续操作的前提,需要先拿到页面上的某个元素~

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

如果确实想把多个元素都获取到,可以使用querySelectorAll来完成~~
只不过这里的返回值,是一个数组了~
在这里插入图片描述

2.事件

和用户操作密切相关,用户在浏览器上,左键点击鼠标,左键双击鼠标,右键点击鼠标,鼠标移动,按下某个键盘按键,调整浏览器的窗口大小,滚动窗口位置…都属于用户针对浏览器进行的操作,都会由浏览器产生对应的"事件"

事件,是和用户操作相关的,无法确定事件什么时候来!!
针对这些可能的用户操作,能做的事情就是提前的做好准备工作
因此,浏览器就会根据用户操作产生对应的事件~ 再有对应的事件

举个例子:
div处理一下鼠标点击事件

<div>点这里</div>
 let div = document.querySelector('div');
        div.onclick = function() {
            console.log('哒哒按下了鼠标~');
        }

click是点击事件,onclick属性就是针对click这个点击事件,提前准备好的事件处理程序~
在这里插入图片描述

chrome控制台里会默认把相同的日志给合并成一个~
此时会在前面有个数字,表示出现了几次~
在这里插入图片描述

事件,三个核心要素:

  1. 事件源 : 事件是那个元素发出来的
  2. 事件类型: 点击,移动,按下键盘,调整窗口
  3. 事件处理程序:通过哪个函数/代码来进行操作

3.获取/修改元素内容

元素内容:开始标签和结束标签之间夹着的内容~
innerHTML属性来获取/修改标签的元素内容~
在这里插入图片描述

还可以通过给这个属性赋值,来起到修改的作用~
在这里插入图片描述

这里赋值,不仅仅能够赋值文本,还可以赋值一个html片段
在这里插入图片描述

4.获取/修改元素属性

修改的就是 开始标签 里面写的哪些键值对

这里的属性,不光是可以去进行获取,也可以去进行修改!
在这里插入图片描述

此处通过修改 src属性,就可以影响到html界面上,一个图片是如何进行展示的
都是通过类似的方式来进行操作的!!!

altimg标签自带的属性~ 没有手动指定,是空字符串,不是undefined

5.获取/修改表单元素属性

像普通的元素(div,img,a,h1...),这些获取属性/修改属性,都非常简单
但是针对表单元素来说,这里涉及到的属性更特殊一点~
此时就单独拎出来说了~

  • value: input 的值.
  • disabled: 禁用
  • checked: 复选框会使用
  • selected: 下拉框会使用
  • type: input 的类型(文本, 密码, 按钮, 文件等)

input只能通过input.value来获取到输入框里面的值~
innerHTML是获取不到的~
因为input标签是单标签,通过innerHTML 获取标签内部的子元素,肯定是没有的!!

🍩简单的案例:显示密码
通过修改type属性~
在这里插入图片描述

🍩案例二: 点击计数
input里面存个整数,搞俩按钮,一个按钮一点,数字就减少1
如果直接写:

 input.value = input.value+1;

注意,此处的相加,并非是算数相加,而是字符串相加了~
在这里插入图片描述

需要先把字符串转成整数!!
parseInt,全局函数~
不仅仅是能针对字符串操作,也能针对其他操作 (比如小数取整)
在这里插入图片描述

js中位运算和移位运算只能针对整数进行操作,number类型进行位运算和移位运算操作,就会被自动转成整数了!!


6.操作复选框

复选框的选择状态,就可以通过checked来进行设置

🍬实现点击某个复选框就可以全选:

 <h3>你的老公是:</h3>
    <div>
        <input type="checkbox" class="man">道明寺
    </div>
    <div>
        <input type="checkbox" class="man">花泽类
    </div>
    <div>
        <input type="checkbox" class="man">朱一龙
    </div>
    <div>
        <input type="checkbox" class="man">神里绫人
    </div>
    <div>
        <input type="checkbox" class="man">陈冠希
    </div>
    <div>
        <input type="checkbox" class="all">成年人全要
    </div>
    <script>
        let inputall = document.querySelector('.all');
        let inputmans = document.querySelectorAll('.man');
        //先针对all来进行处理,当用户点击all就可以对上述所有男人进行选中和取消
        inputall.onclick = function() {
            for (let index = 0; index < inputmans.length; index++) {
                inputmans[index].checked = inputall.checked;
            }
        }
    </script>

在这里插入图片描述

7.获取/修改样式属性

①行内样式

行内样式: 通过 style属性,嵌入到html里面的样式

🍩实现每次点击一下,就把文字大小给放大10个像素

<h3 style="font-size: 20px;">哒哒!!!</h3>
    
    <script>
        let h3 = document.querySelector('h3');
        h3.onclick = function() {
            //实现每次点击一下,就把文字大小给放大10个像素
            //先获取到之前的大小
            let oldsize = parseInt(h3.style.fontSize);
            let newsize = oldsize + 10 + "px";
            h3.style.fontSize = newsize;
        }
    </script>

.style得到style属性,这个style属性本身,也是一个对象,也有一些属性,属性名就和CSS样式名是对应的(但是CSS里使用的是脊柱命名法,而此处js中的属性名则是小驼峰命名法)
这个名字在js里用不了,因此就约定,就把css中脊柱命名法等价转换成小驼峰命名

注意❗

oldSize里的值,不是只有20,还带个px字母,但是parseInt是从左往右进行转换,转换过程中如果遇到了非数字 的字母,此时就会自动停止转换~
设置样式的值的时候,务必要带上单位(如px)!!

②通过css class 指定的样式

但是行内样式其实用的不算多~

更常用的是通过选择器的方式来选中元素,在指定样式
其中最常用的就是类选择器~
因此就可以通过修改元素的class属性,实现修改样式的效果~

🔮举个例子:
开灯关灯/白天夜间模式
开灯时,把背景设成浅色,文字设成深色
关灯时,把背景射程神色,文字设成浅色

<!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>Document</title>
</head>
<body>
    <style>
        .light {
            color: black;
            background-color: rgb(146, 221, 146);
        }
        .dark {
            color: white;
            background-color: black;
        }
        p {
            height: 100%;
        }
        body {
            height: 100%;
        }
        html {
            height: 100%;
        }
    </style>
    <p class="light">Lorem, ipsum dolor sit amet consectetur adipisicing elit. Perspiciatis officia maxime, impedit deleniti praesentium, commodi eius aliquam voluptates obcaecati fuga sequi magni quas nisi asperiores accusamus et necessitatibus illo suscipit.
        Lorem, ipsum dolor sit amet consectetur adipisicing elit. Perspiciatis officia maxime, impedit deleniti praesentium, commodi eius aliquam voluptates obcaecati fuga sequi magni quas nisi asperiores accusamus et necessitatibus illo suscipit.
        Lorem, ipsum dolor sit amet consectetur adipisicing elit. Perspiciatis officia maxime, impedit deleniti praesentium, commodi eius aliquam voluptates obcaecati fuga sequi magni quas nisi asperiores accusamus et necessitatibus illo suscipit.
        Lorem, ipsum dolor sit amet consectetur adipisicing elit. Perspiciatis officia maxime, impedit deleniti praesentium, commodi eius aliquam voluptates obcaecati fuga sequi magni quas nisi asperiores accusamus et necessitatibus illo suscipit.
        Lorem, ipsum dolor sit amet consectetur adipisicing elit. Perspiciatis officia maxime, impedit deleniti praesentium, commodi eius aliquam voluptates obcaecati fuga sequi magni quas nisi asperiores accusamus et necessitatibus illo suscipit.

    </p>

    <script>
        let p = document.querySelector('p');
        p.onclick = function() {
            if(p.className == "light") {
                p.className = "dark";
            }else if (p.className == "dark") {
                p.className = "light";
            }
        }
    </script>
</body>
</html>

通过className属性获取到html元素中的class属性~

之前的理解,每个html开始标签里写属性名,和js里对象的属性名,是一样的
但是class是特殊情况,因为jsclass也是一个关键字,关键字就不能作为属性名,变量名,函数名等…

8.新增节点

  1. 先创建出一个元素(createElement方法)
  2. 把新元素加入到dom树上(appendChild方法)
    理论上,每个let前面都要加

在这里插入图片描述

9.删除节点

使用removeChild删除子节点

<div class="parents">
        <div>哒哒1</div>
        <div>哒哒2</div>
        <div class="todel">哒哒2</div>
    </div>
    
    
    <script>
        let parents = document.querySelector('.parents');
        let del = document.querySelector('.todel');
        parents.onclick = function() {
            parents.removeChild(del);
        }
    </script>

总结

在这里插入图片描述

你可以叫我哒哒呀
本篇到此结束
“莫愁千里路,自有到来风。”
我们顶峰相见!

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

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

相关文章

【JavaScript高级进阶】构造函数和原型,学会prototype

目录 前言 1.构造函数和原型 1.1使用prototype解决内存浪费的问题 1.2constructor构造函数构造器构造函数 2.原型链 2.1js中成员查找规则 2.2原型对象this指向 2.3扩展内置对象 3.call作用 4.继承 4.1利用原型对象继承 写在最后 前言 哈喽哈喽大家好&#xff0c;因为…

【Day1】零基础学java--》记事本运行java程序,通熟语言让你彻底明白为什么配置java环境变量

前言&#xff1a; 大家好&#xff0c;我是良辰丫&#xff0c;从今天开始我将协同大家一起从零基础学习Java&#xff0c;期待与君为伴&#xff0c;走向海的彼岸。&#x1f495;&#x1f495;&#x1f495; &#x1f9d1;个人主页&#xff1a;良辰针不戳 &#x1f4d6;所属专栏&a…

C语言之数组练习题

第1关&#xff1a;数组插入元素 300 任务要求参考答案评论106 任务描述相关知识 数组数组元素的表示方法编程要求测试说明任务描述 本关需要你将一个数插入到一组已经排好序的数组并输出。 相关知识 数组在程序设计中&#xff0c;为了处理方便&#xff0c; 把具有相同类型…

【C++】多态 — 多态的原理 (下篇)

文章目录&#x1f4d6; 前言1. 虚函数表1.1 虚函数表的引入&#xff1a;1.2 基类的虚表&#xff1a;1.3 派生类虚表&#xff1a;2. 多态的原理2.1 多态虚函数的调用和普通函数的调用&#xff1a;2.1 - 1 到底什么是多态&#xff08;重点&#xff09;2.1 - 2 父类的指针实现多态…

Allegro基本规则设置指导书之Analysis Modes

Allegro基本规则设置指导书之Analysis Modes 下面介绍基本规则设置指导书之Analysis Modes 点击set-up-constrains-Modes 调出Analysis Modes,这个是所有DRC的总开关 下面介绍常用的一些开关设置 Design Options (Soldermask) 从上往下 阻焊到阻焊的间距 阻焊到pad和走线…

EasyCVR及智能分析网关在校园视频融合及明厨亮灶项目中的应用方案设计

随着校园智能化需求的不断增长&#xff0c;越来越多的校园逐渐开始升级校园监控视频平台&#xff0c;将原先传统的视频监控系统&#xff0c;逐渐升级转变为灵活性强、视频能力丰富、具备AI检测能力、并能支持视频汇聚与统一管理的智能化校园综合管理平台。 在某学校的视频监控…

MapReduce概述

MapReduce概述 MapReduce是一个分布式运算程序的编程框架&#xff0c;是用户开发“基于Hadoop的数据分析应用”的核心框架。 MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序&#xff0c;并发运行在一个Hadoop集群上。 MapReduce…

【优化算法】鹈鹕优化算法(POA)(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑…

ARMv7/ARMv8/ARMv9架构你不知道的那些事

快速链接: . &#x1f449;&#x1f449;&#x1f449; 个人博客笔记导读目录(全部) &#x1f448;&#x1f448;&#x1f448; 付费专栏-付费课程 【购买须知】: 【精选】ARMv8/ARMv9架构入门到精通-[目录] &#x1f448;&#x1f448;&#x1f448; 以下仅代表个人观点&…

七大排序算法——快速排序

AcWing算法专题——快速排序 文章目录AcWing算法专题——快速排序前言一、快速排序的核心二、算法图示三、算法代码四、算法详解1.递归停止的条件2.下标移动的实现3.下标初始值的设定4.边界情况分析4.1区间划分4.2 do while循环条件五、思考题总结前言 现在我们开始进入算法模块…

【第一章 虚拟机】

第一章 虚拟机 1. 虚拟机VM ①虚拟机就是一台虚拟的计算机&#xff0c;它是一款软件&#xff0c;用来执行一系列虚拟计算机指令。 ②虚拟机分为系统虚拟机和程序虚拟机。系统虚拟机&#xff08;比如VMware&#xff09;,它们完全是对物理计算机的仿真&#xff0c;提供了一个可运…

瑞芯微rk3568移植openbmc(三)

2022.11.04 更新 1、关于h264 novnc openbmc中使用的ipkvm其server端调用的是libvncserver库&#xff0c;而其web client端调用的则是novnc的库&#xff0c;既上篇研究修改了libvncserver后&#xff0c;再次继续研究了一下novnc。 Github搜索一圈以后&#xff0c;发现https://…

Java设计模式之单例模式详细讲解

设计模式与单例模式 1、什么是单例模式 ​ 单例模式是指保证某个类在整个软件系统中只有一个对象实例&#xff0c;并且该类仅提供一个返回其对象实例的方法&#xff08;通常为静态方法&#xff09; 2、单例模式的种类 ​ 经典的单例模式实现方式一般有五种 2.1 饿汉式 //…

【SpringBoot】SpringBoot整合SpringSecurity+thymeleaf实现认证授权(配置对象版)

一.概述 1.框架概述 Spring Security 是 Spring 家族中的一个安全管理框架&#xff0c;Spring Security 的两大核心功能就是认证&#xff08;authentication&#xff09;和授权&#xff08;authorization&#xff09;。 认证 &#xff1a;你是什么人。授权 &#xff1a;你能…

RHCE学习 --- 第一次作业

RHCE学习 — 第一次作业 首先我们先设置网卡开机自动启动 vi /etc/sysconfig/network-scripts/ifcfg-ens160 最下面修改ONBOOTyes 然后安装好chrony&#xff0c;配置/etc/chrony.conf文件&#xff0c;添加题目要求的时间服务器 然后设置一个例行性工作&#xff0c;每天早上九…

美国FBA海运专线究竟是什么?美国fba海运专线都有那些?

美国FBA海运专线究竟是什么?美国FBA特别航运线&#xff0c;顾名思义就是海运发送的特别货运线&#xff0c;那么它的收费标准是什么呢?一、美国FBA海运专线究竟是什么 美国FBA特别航运线&#xff0c;顾名思义就是海运发送的特别货运线&#xff0c;那么它的收费标准是什么呢? …

猿创征文|『编程与创作』10款颜值颇高的宝藏工具

&#x1f31f;个人主页&#xff1a;Mymel_晗&#xff0c;一名喜欢鼓捣 Java 的在校学生。 &#x1f31f;撸代码本来是一件枯燥的事情&#xff0c;而一款高颜值工具加持可能会让你事半功倍&#xff0c;今天就给大家推荐一下我在大学学习中发现的几款颜值工具~ 从写代码&#xff…

录音m4a怎么转换成mp3

有小伙伴问手机录音文件电脑上播放不了怎么办&#xff1f;这是很多小伙伴在用手机录完音后遇到最多的问题&#xff0c;尤其是那些第一次遇到这个问题的人&#xff0c;根本不知道这是什么原因导致的&#xff0c;还总以为自己的录音文件出了问题&#xff0c;回去检查发现手机上还…

03-Nginx性能调优与零拷贝

目录 Nginx 性能调优 零拷贝&#xff08;Zero Copy&#xff09; 零拷贝基础 A、 实现细节 B、 总结 零拷贝方式 A、 实现细节 B、 总结 A、 实现细节 B、 总结 A、 实现细节 B、 总结 Nginx 性能调优 在 Nginx 性能调优中&#xff0c;有两个非常重要的理论点&#xff08;面试点…

【C++红黑树】带图详细解答红黑树的插入,测试自己的红黑树是否正确的代码

目录 1.红黑树的概念 1.1红黑树的特性&#xff08;41&#xff09; 2.红黑树的框架 3.红黑树的插入 3.1parent在grandfather的左边 3.1parent在grandfather的右边 4.测试自己的红黑树是不是平衡的 1.红黑树的概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个…