JavaScript-WebAPI

文章目录

    • JS组成
    • 什么是 webApis 和API
    • DOM 简介
      • document 对象
    • 获取 DOM 对象
      • 利用css选择器来获取DOM元素
      • 选择指定css选择器的所有元素
      • 其他获取DOM元素方法(了解)
    • 操作元素内容
      • 对象.innerText
      • 对象.innerHTML
    • 操作元素属性
      • 操作元素常用属性
      • 操作元素样式属性
        • 通过 style 属性操作元素样式
        • 通过类名(className)操作元素样式-了解
        • 通过 classList 操作元素样式-推荐
        • 总结
      • 操作表单元素属性
      • 自定义属性

JS组成

JavaScript的组成:

  • ECMAScript:
    • 规定了js基础语法核心知识。
    • 比如:变量、分支语句、循环语句、对象等等。
  • Web APIs :
    • DOM 文档对象模型, 定义了一套操作HTML文档的API。
    • BOM 浏览器对象模型,定义了一套操作浏览器窗口的API。

在这里插入图片描述

什么是 webApis 和API

  1. web APIs 包含:
    • DOM 文档对象模型:使用 javaScript 操作页面文档
    • BOM 浏览器对象模型:使用 javaScript 操作浏览器
  2. **web APIs **作用:使用 javaScript 去操作页面文档和浏览器。
  3. 接口:无需关心内部如何实现,程序员只需要调用就可以很方便实现某些功能。
  4. API:应用程序接口(Application Programming Interface)
  5. API 作用:开发人员使用 javaScript 提供的接口操作网页元素浏览器
    在这里插入图片描述

DOM 简介

  • DOM:(Documenet Object Model – 文档对象模型)
  • 作用:DOM 用来操作网页文档(标签),开发网页特效和实现用户交互。
  • 核心思想:就是把网页内容当作对象来处理,通过对象的属性方法对网页内容操作。
    在这里插入图片描述

document 对象

  • 是 DOM 里提供的一个对象,是 DOM 顶级对象。
  • 作为网页内容的入口
  • 所以它提供的属性和方法都是用来访问操作网页内容的。

获取 DOM 对象

利用css选择器来获取DOM元素

  • 语法

    const box = document.querySelector('css选择器')
    
  • 参数:包含一个或多个有效的css选择器字符串

  • 返回值:CSS选择器匹配的第一元素对象。如果没有匹配到,则返回null。

<div class="box">我是一个盒子</div>
<p class="box tit">我是一个p标签
<span>123</span>
</p>
<script>
    //通过css选择器获取元素
    //选择指定css选择器的第一个元素
    //数组和对象 最好使用 const 声明
    const box = document.querySelector('.box')
    const p = document.querySelector('p')
    const tit = document.querySelector('.box.tit') //交集
    const span = document.querySelector('.tit span') //后代
    console.log(tit)  //只能单纯输出内容
    console.dir(box)   //用来输出对象格式数据
</script>

选择指定css选择器的所有元素

  • 语法

    const lis = document.querySelectorAll('css选择器')
    
  • 参数:包含一个或多个有效的css选择器字符串

  • 返回值

    • CSS选择器匹配的 NodeList -> 伪数组
    • 有长度有索引号的数组
    • 但没有 pop()、push()等数组方法
    • 利用 循环遍历(for)方式来获取每一个对象
<ul>
    <li>1</li>
	<li>2</li>
</ul>

<ol>
    <li>3</li>
	<li>4</li>
</ol>

<div>我是div</div>

<script>
    //获取多个元素
    //需求:所有 ol 的后代 li => ol li
    const lis = document.querySelectorAll('ol li')
    console.log(lis) //NodeList(2)  [li, li]  => 伪数组
    for (let i = 0; i < lis.length; i++) {
        console.log(lis[i])
    }

    const div = document.querySelectorAll('div')
    console.log(div)    //[div] =>获取的元素只有一个,那也是伪数组形式
</script>

其他获取DOM元素方法(了解)

语法实例描述
getElementByIddocumenet.getElementById(‘box’)根据id获取元素,单个
getElementsByTagNamedocument.getElementsByTagName(‘li’)根据标签名获取元素,伪数组
getElementsByClassNamedocument.getElementsByClassName(‘one’)根据类名获取元素,伪数组
getElementsByNamedocument.getElementsByName(‘uname’)根据name属性值获取元素,伪数组

操作元素内容

  • DOM对象可以操作页面标签,所以本质上就是操作DOM对象(增删改查)
  • 操作标签元素的内容的方式:
    • 对象.innerText 属性
    • 对象.innerHTML 属性

对象.innerText

  • 将文本内容添加/更新到任意标签位置
  • 显示纯文本,不解析标签
//获取元素
const box = document.querySelector('div')
//innerText
//获取内容 => 只获取文本
console.log(box.innerText)  //我是div
//设置内容
box.innerText = '<strong>新值</strong>'   //<strong>新值</strong>

对象.innerHTML

  • 将文本内容添加/更新到任意标签位置
  • 显示所有内容,解析标签
//获取元素
const box = document.querySelector('div')
//innerHTML
//获取内容 => 会把嵌套的标签获取到
console.log(box.innerHTML)  //<em>我是div</em>
//设置内容
box.innerHTML = '<strong>新值</strong>'   //新值 => 加粗后的

操作元素属性

操作元素常用属性

  • 可以通过DOM操作元素属性

  • 最常见的属性:hreftitlesrc

  • 语法

    对象.属性 =
  • 直接通过属性名修改

    <img src='./images/1.png' alt='波仔'>
    <script>
        //获取元素
        const img = document.querySelector('img')
        //操作元素属性
        //查
        console.log(img)
        //改
        img.src = './images/2.png'
        //增
        img.title = '我可爱不爱'
        //删
        img.alt = ''
    </script>
    

操作元素样式属性

还可以通过 DOM对象修改标签元素的样式属性

  • 比如通过 轮播图小圆点自动更换颜色 样式
  • 点击按钮可以滚动图片,这是移动的的位置 translateX 等等
    在这里插入图片描述
通过 style 属性操作元素样式
  • 语法:

    对象.style.样式属性 =
  • 练习

    <div class='box'>我是一个盒子</div>
    <script>
        const box = document.querySelector('.box')
        //修改元素样式
        box.style.fontSize = '20px'
        box.style.backgroundColor = 'pink'
    </script>
    

注意:

1.修改样式通过style属性引出

2.如果属性有-连接符,需要转换为小驼峰命名法

3.赋值的时候,需要的时候不要忘记加css单位

通过类名(className)操作元素样式-了解
  • 使用的原因:如果修改的样式比较多,直接通过style属性修改比较繁琐,我们可以通过借助于css类名的形式。

  • 核心:把多个样式放到css一个类中,然后把这个类添加到这个元素身上。

  • 语法:

    <style>
        .box {
            width: 200px;
            height: 200px;
            color: #8df;
            font-size: 30px;
            border: 1px solid red;
        }
    </style>
    <body>
        <div>文字描述</div>
    <script>
        //需求:通过 className属性 的形式设置样式
        const box = document.querySelector('div')
        box.className = 'box'
        console.log(box.className)
    </script>
    </body>
    

注意:

1.由于class是关键字, 所以使用className去代替

2.className是使用新值换旧值, 如果需要添加一个类,需要保留之前的类名

通过 classList 操作元素样式-推荐
  • 为了解决className 容易覆盖以前的类名,我们可以通过classList方式追加和删除类名。

  • 好处:不会影响已经存在的类名,是在原来的基础上添加。

  • 语法:

    //新增类名
    对象.classList.add('类名')
    //移除
    对象.classList.remove('类名')
    //切换 -> 有则删除,没有添加
    对象.classList.toggle('类名')
    //判断是否存在某个类名 -> 会返回一个布尔值 -> 存在true,不存在false
    对象.classList.contains('类名')
    
  • 练习

    <head>
        <title></title>
    <style>
        .nav {
            width: 200px;
            height: 200px;
            background-color: #8df;
            color: green;
        }
    .box {
        font-size: 300px;
        text-align: center;
        line-height: 300px;
        border: 1px solid pink;
    }
    </style>
    </head>
    <body>
        <div class='nav'>文字描述</div>
    	<script>
            //需求:利用 classList 追加、删除、切换、判断类名
            const div = document.querySelector('div')
            //1. 追加类名 -> 在原有的基础上,追加新类名
            div.classList.add('box')    //class="nav box"
            //2. 删除
            div.classList.remove('nav') //class="box"
            //3. 切换
            div.classList.toggle('nav') //class="box nav"
            //4. 判断是否存在某个类名
            console.log(div.classList.contains('abc'))  //false
            console.log(div.classList.contains('nav'))  //true
        </script>
    </body>
    
总结
  • 使用style的场景:修改的样式很少。
  • 使用classList(推荐)/className的场景:修改大量的样式。

操作表单元素属性

  • 表单很多情况,也需要修改属性,比如点击眼睛,可以看到密码,本质是把表单类型转换为文本框。

  • 正常的有属性有取值的跟其他的标签属性没有任何区别。

    //获取:DOM对象.属性
    //设置:DOM对象.属性 = 新值
    表单.value = '用户名'
    表单.type = 'passwird'
    
  • 表单属性中添加就有效果,移除就没有效果,一律使用布尔值表示,比如实现禁用按钮,勾选按钮等。

  • 如果为 true 代表添加了该属性,如果是 false 代表移除了该属性。比如: disabledcheckedselected

<body>
    <input type='text' value='文本'>
    <br>
    <input type='password' value='12345'>
    <br>
    <input type='radio' checked><br>
    <button>按钮</button>
	 <br>
    <select name='' id=''>
        <option value='' >北京</option>
        <option value='' selected>上海</option>
    </select>
	<script>
        //操作表单属性
        //1. value属性 => 收集用户输入的值
        const uname = document.querySelector("[type='text']")
        //获取 对象.value
        // console.log(uname.value)
        //设置 对象的value属性 对象.value = 值
        uname.value = 'niuniu'

        //2. type属性 => 规定input的类型
        const pwd = document.querySelector("[value='12345']")
        //获取
        console.log(pwd.type)
        //设置 把password 换成 text
        pwd.type = 'text'

        //3. 修改 单选或复选按钮的选中 checked
        const radio = document.querySelector("[type='radio']")
        //获取
        console.log(radio.checked)
        //设置 false是不选中 true是选中
        radio.checked = false //不选中

        //4. 禁止使用表单按钮
        const btn = document.querySelector('button')
        //获取
        console.log(btn.disabled) //false
        //设置
        btn.disabled = true //禁止使用按钮

		//5. 判断当前 option 是不是选中项
        const option = document.querySelector('select option:first-child')
        console.log(option.selected) //false 上海
        //设置
        option.selected = true //选中北京
</script>
</body>

自定义属性

  1. 标准属性:标签天生自带的属性 比如class、id、title等, 可以直接使用点语法操作比如:对象.title

  2. 自定义属性:

    • 在html5中推出来了专门的 data- 自定义属性

    • 使用场景:通过自定义属性可以存储数据,后期可以使用这个数据

    • 在标签上一律以 data- 开头

    • 在DOM对象上一律以 dataset 对象方式获取,对象.dataset

      在这里插入图片描述

<body>
    <!-- 设置:在标签上,使用 data-名字="值" -->
        <div data-index='0' data-id='box'>niuniu</div>
	<script>
            //自定义属性 => 保存某些数据,后续使用
            const div = document.querySelector('div')
            //获取: 对象.dataset => 对象集合
            console.log(div.dataset) //{index: '0', id: 'box'}
            //获取属性值 对象.属性名
            console.log(div.dataset.index)  //0
    </script>
</body>

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

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

相关文章

pytorch中的contiguous()

官方文档&#xff1a;https://pytorch.org/docs/stable/generated/torch.Tensor.contiguous.html 其描述contiguous为&#xff1a; Returns a contiguous in memory tensor containing the same data as self tensor. If self tensor is already in the specified memory forma…

羊大师:羊奶养生,解锁健康之道的新密码

在探寻健康与养生的旅途中&#xff0c;我们总渴望找到那把开启健康之门的钥匙。而今&#xff0c;羊奶以其独特的营养价值和健康益处&#xff0c;正悄然成为那把解锁健康之道的新密码。 羊奶&#xff0c;自古以来便是自然赋予的珍贵礼物。它富含优质蛋白、多种维生素及矿物质&am…

pandas数据分析(6)

算数运算 和Numpy数组一样&#xff0c;DataFrame和Series也利用了向量化技术。例如&#xff1a; 不过pandas真正强大之初在于自动对齐机制&#xff1a;当对多个DataFrame使用算数运算符时&#xff0c;pandas会自动将它们按照列或行索引对齐。 结果DataFrame的索引和列是两个Da…

day02-统计数据

numpy统计学 1.求平均值[数组名.mean()/np.mean(数组名)] m1 np.arange(20).reshape((4,5))m1.mean() #9.5若想要求某一维的平均值&#xff0c;设置axis参数&#xff0c;多维数组元素指定&#xff1a; axis 0&#xff0c;将从上往下计算。axis 1&#xff0c;将从左往右计算…

VIM介绍

VIM&#xff08;Vi IMproved&#xff09;是一种高度可配置的文本编辑器&#xff0c;用于有效地创建和更改任何类型的文本。它是从 vi 编辑器发展而来的&#xff0c;后者最初是 UNIX 系统上的一个文本编辑器。VIM 以其键盘驱动的界面和强大的文本处理能力而闻名&#xff0c;是许…

拼接各列内容再分组统计

某个表格的第1列是人名&#xff0c;后面多列是此人某次采购的产品&#xff0c;一个人一次可以采购多个同样的产品&#xff0c;也可以多次采购。 ABCD1JohnAppleAppleOrange2PaulGrape3JohnPear4SteveLycheeGrape5JessicaApple 需要整理成交叉表&#xff0c;上表头是产品&…

透过 Go 语言探索 Linux 网络通信的本质

大家好&#xff0c;我是码农先森。 前言 各种编程语言百花齐放、百家争鸣&#xff0c;但是 “万变不离其中”。对于网络通信而言&#xff0c;每一种编程语言的实现方式都不一样&#xff1b;但其实&#xff0c;调用的底层逻辑都是一样的。linux 系统底层向上提供了统一的 Sock…

openlayers中区域掩膜的实现

概述 在前文完成了mapboxGL中区域掩膜的实现。近日有人问到说在openlayers中如何实现&#xff0c;本文就带大家看看如何在openlayers中实现区域掩膜。 实现效果 实现 1. 实现思路 在地图容器中添加一个canvas&#xff0c;设置其在map之上&#xff1b;监听map的postrender事…

Vue2-Vue Router前端路由实现思路

1.路由是什么&#xff1f; Router路由器&#xff1a;数据包转发设备&#xff0c;路由器通过转发数据包&#xff08;数据分组&#xff09;来实现网络互连 Route路由&#xff1a;数据分组从源到目的地时&#xff0c;决定端到端路径的网络范围的进程 | - 网络层 Distribute分发…

时空预测+特征分解!高性能!EMD-Transformer和Transformer多变量交通流量时空预测对比

时空预测特征分解&#xff01;高性能&#xff01;EMD-Transformer和Transformer多变量交通流量时空预测对比 目录 时空预测特征分解&#xff01;高性能&#xff01;EMD-Transformer和Transformer多变量交通流量时空预测对比效果一览基本介绍程序设计参考资料 效果一览 基本介绍…

顶级10大AI测试工具

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Oracle Database 23ai新特性:DB_DEVELOPER_ROLE角色

角色介绍 从 Oracle Database 23ai 开始&#xff0c;新角色“DB_DEVELOPER_ROLE”允许管理员快速分配开发人员为 Oracle 数据库设计、构建和部署应用程序所需的所有必要权限。&#xff08;包括构建数据模型所需的系统权限以及监视和调试应用程序所需的对象权限&#xff09;。通…

【数据结构】02.顺序表

一、顺序表的概念与结构 1.1线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。线性表是⼀种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构&#xff0…

上位机图像处理和嵌入式模块部署(mcu项目1:实现协议)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 这种mcu的嵌入式模块理论上都是私有协议&#xff0c;因为上位机和下位机都是自己开发的&#xff0c;所以只需要自己保证上、下位机可以通讯上&…

ELK 企业实战7

ELKkafkafilebeat企业内部日志分析系统 1、组件介绍 1、Elasticsearch&#xff1a; 是一个基于Lucene的搜索服务器。提供搜集、分析、存储数据三大功能。它提供了一个分布式多用户能力的全文搜索引擎&#xff0c;基于RESTful web接口。Elasticsearch是用Java开发的&#xff…

[数据集][目标检测]刀具匕首持刀检测数据集VOC+YOLO格式8810张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;8810 标注数量(xml文件个数)&#xff1a;8810 标注数量(txt文件个数)&#xff1a;8810 标注…

sql查询练习

1.表的结构 课程表&#xff1a;课程编号cid&#xff0c;课程名称canme&#xff0c;老师tid&#xff0c; 教师表&#xff1a;教师tid&#xff0c;教师姓名tname 分数表&#xff1a;学生student_sid&#xff0c;课程 cours_id&#xff0c;&#xff0c;分数score 学生表&#xff…

阶段三:项目开发---大数据系统基础环境准备:任务1:准备系统运行的先决条件

任务描述 知识点&#xff1a; 大数据基础环境准备 重 点&#xff1a; SSH免密码连接 安装配置JDK 安装配置Scala 难 点&#xff1a; 无 内 容&#xff1a; 项目开发测试环境为分布式集群环境&#xff0c;在当前项目中使用多台基于CentOS 64bit 的虚拟机来模拟生产…

在Ubuntu中使用ROS搭建PX4 Gazebo 模拟飞行 四旋翼 固定翼

综合了网上很多教程以及踩了很多坑总结下来的教程 Ubuntu安装 此处不在详细说明&#xff0c;网上可随处搜到 ROS安装 感谢鱼香ROS大佬提供一键安装脚本 wget http://fishros.com/install -O fishros && sudo bash fishros 接下来按顺序按 1 1 2 3 1 再次运行 w…

关于 lvds 屏幕的一些知识

网上的截图&#xff1a; lvds的 通道。 lvds 的协议 关于 sync 模式与 de 模式&#xff1a; ------------------------------------------------------------------------------------------------------------------ 芯片的数据手册的看法。 这个手册 &#xff0c;就指明了…