WebAPI (一)DOM树、DOM对象,操作元素样式(style className,classList)。表单元素属性。自定义属性。间歇函数定时器

文章目录

  • Web API基本认知
  • 一、 变量声明
  • 二、 DOM
    • 1. DOM 树
    • 2. DOM对象
    • 3. 获取DOM对象
      • (1)、选择匹配的第一个元素
      • (2)、选择匹配多个元素
  • 三、 操作元素
    • 1. 操作元素内容
    • 2. 操作元素属性
      • (1)、常用属性(href之类的)
      • (2)、通过style属性操作CSS
      • (3)、通过类名(className)操作CSS
      • (4)、通过classList操作控制CSS
      • (5)、操作表单元素属性
      • (6)、自定义属性
  • 四、 定时器-间歇函数
    • 1. 开启定时器
    • 2. 关闭定时器

Web API基本认知

web API包括DOM和BOM

一、 变量声明

建议:const优先,尽量使用const。有了 变量先给const,后面发现是要被修改的,再改为let。

  • const 声明的变量的值不能更改,而且const声明变量的时候需要里面进行初始化
  • 但是对于引用数据类型,const声明的变量,里面存的不是值,是地址。
    在这里插入图片描述

什么时候使用let声明变量?

  • 如果基本数据类型的值或者引用数据类型的地址发生变化的时候,需要用let

案例一:问以下内容可不可以把let 改为 const?

    let num1 = +prompt('输入第一个数值')
    let num2 = +prompt('输入第二个数值')
    alert(`两者相加的结果是:${num1 + num2}`)

    let person = {
        uname: 'Tom',
        age: 19
    }
    person.address = '山东'

可以,因为变量的内容没发生变化

案例二:
在这里插入图片描述

二、 DOM

DOM–文档对象模型,操作网页内容,实现用户交互

1. DOM 树

HTML 文档以树状结构直观的表现出来,我们称之为文档树或 DOM 树,直观的体现了标签与标签之间的关系。
在这里插入图片描述

2. DOM对象

DOM对象怎么创建的?

  • 浏览器根据html标签生成的 JS对象(DOM对象)
  • DOM的核心就是把内容当对象来处理

html里的标签,对应到dom树里,是一个个的JS对象。比如div在html里是标签,通过JS获取过来,在dom树里,div是个对象,div不同的属性就是对象的属性。

document对象

  • 是 DOM 里提供的一个对象(是dom树里最大的对象)
  • 网页所有内容都在document里面

3. 获取DOM对象

根据CSS选择器来获取DOM元素

(1)、选择匹配的第一个元素

document.querySelector('css选择器')  //在style里怎么写css选择器,这里就可以怎么填

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

(2)、选择匹配多个元素

document.querySelectorAll('css选择器') 

返回值:CSS选择器匹配的NodeList 对象集合。得到的一个伪数组,有长度、索引号的数组。但是不能用push等数组方法。

<body>
    <!-- 练习: 依次输出3个li的DOM对象 -->
    <ul class="nav">
        <li>我的首页</li>
        <li>产品介绍</li>
        <li>联系方式</li>
    </ul>
    <script>
        // 2. 选择匹配的多个元素 querySelectorAll 返回伪数组
        const lis = document.querySelectorAll('ol li')
        console.log(lis);
        // 练习--依次输出3个li的DOM对象
        const navList = document.querySelectorAll('.nav li')
        for (let index = 0; index < navList.length; index++) {
            console.log(navList[index]);
        }
    </script>
</body>

在这里插入图片描述

三、 操作元素

1. 操作元素内容

  • innerText:修改文本内容,不解析标签
  • innerHTML:修改文本内容,解析标签
<body>
  <div class="box">这是文本内容</div>
  <script>
    // 1. innerText 不解析标签
    const box = document.querySelector('.box')
    box.innerText = '改成innerText'
      
    // 2. innerHTML 可解析标签
    box.innerHTML = '改成inner HTML'
    box.innerHTML = '<strong>改成inner HTML</strong>'
  </script>
</body>

2. 操作元素属性

(1)、常用属性(href之类的)

常用属性比如:href,title,src
语法:对象.属性 = 值

(2)、通过style属性操作CSS

语法:对象.style.样式属性 = 值

注:
  如果属性有-连接符,需要转换为小驼峰命名,比如background-color,此处需写成backgroundColor;
  赋值的时候不要忘记加css单位

<body>
  <div class="box">div</div>
  <script>
      //获取对象
    const box = document.querySelector('.box')
    box.style.width = '200px'
    box.style.height = '200px'
    box.style.backgroundColor = 'skyblue'
  </script>
</body>

(3)、通过类名(className)操作CSS

如果修改的样式比较多,直接通过style属性修改比较繁琐,可以通过借助于css类名的形式。
语法:对象.className = '类名'
className的本质是替换类名,如果需要添加类名,需要保留之前的类名

<style>
    .test {
        width: 200px;
        height: 200px;
        background-color: greenyellow;
    }

    .test2 {
        width: 250px;
        height: 250px;
        color: purple;
    }
</style>
<body>
    <div class="test">className测试</div>
    <script>
        // className操作CSS
        // (1)获取元素
        const testBox = document.querySelector('.test')
        // (2)修改类名,覆盖原来的类名
        testBox.className = 'test2'
        // 若仍要保持原来的属性
        testBox.className = 'test test2'
    </script>
</body>

(4)、通过classList操作控制CSS

为了解决className 容易覆盖以前的类名,我们可以通过classList方式追加和删除类名

// 追加一个类
testBox.classList.add('类名')
// 删除一个类
testBox.classList.remove('类名')
// 切换一个类,有则删掉,没有就加上
testBox.classList.toggle('类名')

toggle:类似于开关,可用于切换背景模式(白天,黑夜)

(5)、操作表单元素属性

  • 获取表单值用value(innerHTML获取不到表单的值)
  • 设置表单属性: DOM对象.属性名 = 值
  • 表单中添加就有效果,移除就没有效果的属性一律使用布尔值表示。如果为true 代表添加了该属性 如果是false 代表移除了该属性,比如disabled,checked,selected.
<body>
  <input type="text" value="computer"><br><br>
  <input type="checkbox" id="hobby" name="喝酒" checked> 喝酒
  <input type="checkbox" id="hobby" name="抽烟"> 抽烟
  <input type="checkbox" id="hobby" name="烫头"> 烫头
  <br><br>
  <input type="button" disabled class="buton">
  <script>
    // 获取表单的值  value属性
    const ipt = document.querySelector('input')
    console.log(ipt.value); // computer
    // console.log(ipt.innerHTML);  innerHTML获取不到表单的值
    // 设置表单的值
    ipt.value = 'tree'
    ipt.type = 'password'
    console.log(ipt.value); // tree
    
    // 复选框
    const hobbys = document.querySelectorAll('#hobby')
    hobbys[0].checked = false
    // 字符串只有null或空字符串会被解析为false,这里只接受boolean值,发生了隐式转换!
    hobbys[1].checked = 'true'

    // 按钮disabled
    const buton = document.querySelector('.buton')
    buton.disabled = false
  </script>
</body>

(6)、自定义属性

data-自定义属性,注意要以data- 开头。DOM对象上通过dataset对象获取自定义的属性

<body>
  <!-- data-自定义属性 -->
  <div data-id="1" data-name="nothing">1</div>
  <div data-id="2">2</div>
  <div data-id="3">3</div>
  <div data-id="4">4</div>
  <div data-id="5">5</div>
  <script>
    const one = document.querySelector('div')
    console.dir(one);
    console.log(one.dataset.id); // 1
    console.log(one.dataset.name); // nothing
  </script>
</body>

在这里插入图片描述

四、 定时器-间歇函数

1. 开启定时器

语法: setInterval(函数名,间隔时间)

  • 该函数返回的是该定时器的id。每隔一段时间调用这个函数
  • 参数间隔时间的单位是毫秒
  • 函数不是立即执行,而是过了间隔时间后,执行该函数
    • 也就是:间隔时间,执行函数,间隔时间,执行函数
    • 而不是:执行函数,间隔时间,执行函数,间隔时间
// 匿名函数
let num = setInterval(function () {
console.log('3秒钟执行一次');
}, 1000)

// 不用匿名函数
function fn () {
console.log('1S执行一次');
}
let num2 = setInterval(fn, 1000) //如果是写fn()的话,则会出错,因为fn()是调用函数

2. 关闭定时器

语法:clearInterval(定时器id)

// 关闭定时器2
clearInterval(num2)

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

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

相关文章

ctfshow-php特性(web123-web150plus)

​web123 <?php error_reporting(0); highlight_file(__FILE__); include("flag.php"); $a$_SERVER[argv]; $c$_POST[fun]; if(isset($_POST[CTF_SHOW])&&isset($_POST[CTF_SHOW.COM])&&!isset($_GET[fl0g])){if(!preg_match("/\\\\|\/|\~|…

基于大数据的科研热点分析与挖掘系统

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 科研活动的快速发展产生了大量的学术文献&#xff0c;如何从这些文献中提炼出有价值的科研热点和趋势成为了一个重要的问题。本项目旨在开发一个基于大数据的科研热点分析可视化系统&#xff0c;采…

Differential Diffusion,赋予每个像素它应有的力量,以及在comfyui中的测试效果

&#x1f97d;原论文要点 首先是原论文地址&#xff1a;https://differential-diffusion.github.io/paper.pdf 其次是git介绍地址&#xff1a;GitHub - exx8/differential-diffusion 感兴趣的朋友们可以自行阅读。 首先&#xff0c;论文开篇就给了一个例子&#xff1a; 我们的方…

Redis 事务:支持回滚吗?深入解析

今天我们要来探讨一个关于 Redis 事务的重要问题&#xff1a;Redis 事务支持回滚吗&#xff1f;这个问题在 Redis 的使用中经常被提及&#xff0c;对于正确理解和使用 Redis 事务至关重要。那么&#xff0c;让我们一起深入解析这个问题吧&#xff01; 一、Redis 事务简介 在了…

tabBar设置底部菜单选项以及iconfont图标

tabBartabBar属性:设置底部 tab 的表现 ​ ​ ​ ​ 首先在pages.json页面写一个tabBar对象,里面放入list对象数组,里面至少要有2个、最多5个 tab, 如果只有一个tab的话,H5(浏览器)依然可以显示底部有一个导航栏,如果没有,需要重启后才有,小程序则报错,只有2个以上才可以…

IDEA加载工程报错Error Loading Project: Cannot load module demo.iml解决

spring boot工程由于工程名字为demo不太好&#xff0c;直接更改了这个工程的名字&#xff0c;主要操作了包括重命名项目文件夹、修改IDEA中的项目名称、模块名称、包名称、以及相关的配置文件等。 然后再打开工程&#xff0c;报错Error Loading Project: Cannot load module de…

瑜伽馆预约系统小程序搭建,全民健身下的市场机遇

随着现代生活水平的提高&#xff0c;人们对健康的要求逐渐提高&#xff0c;瑜伽作为一种修身养性的健身方式&#xff0c;深受大众欢迎。在互联网小程序的普及下&#xff0c;瑜伽馆预约小程序也成为了市场的必然发展趋势&#xff01; 为什么要开发瑜伽馆预约系统&#xff1f; 瑜…

今天又学到了——图编号关联章节号,QGIS下载文件存储的瓦片

记录教程来源&#xff1a;​​​​​​【Word图编号关联章节号】图片分章节 编号&#xff0c;图1-1、图2-1_哔哩哔哩_bilibili 上面链接这个实现的是这个效果&#xff1a; word自动目录及章节自动编号教程_哔哩哔哩_bilibili&#xff0c;这个的效果是自己设计多级列表&#xf…

Redis高级-----持久化AOF、RDB原理

目前已更新系列&#xff1a; 当前&#xff1a;Redis高级-----持久化AOF、RDB原理 Redis高级---面试总结5种数据结构的底层实现 Redis高级----主从、哨兵、分片、脑裂原理-CSDN博客 Redis高级---面试总结内存过期策略及其淘汰策略 计算机网络--面试知识总结一 计算机网络-…

《JavaEE进阶》----11.<SpringIOCDI【Spring容器+IOC详解+DI介绍】>

本篇博客会详细讲解什么是Spring。 SpringIOC SpringID 五个类注解&#xff1a;Controller、Service、Repository、Component、Configuration 一个方法注解&#xff1a;Bean 什么是Spring IOC容器 Spring 是包含众多工具的IOC容器。能装东西的容器。 1.容器 如我们之前学的 Tom…

JavaFX基本控件-TextField

JavaFX基本控件-TextField 常用属性textpromptTextpaddingalignmentwidthheighttooltipbordereditabledisablevisible 格式化整形格式化 实现方式Java实现fxml实现 常用属性 text 设置文本内容 textField.setText("测试数据");promptText 设置文本字段的提示文本&am…

Ollama—87.4k star 的开源大模型服务框架!!

这一年来&#xff0c;AI 发展的越来越快&#xff0c;大模型使用的门槛也越来越低&#xff0c;每个人都可以在自己的本地运行大模型。今天再给大家介绍一个最厉害的开源大模型服务框架——ollama。 项目介绍 Ollama 是一个开源的大语言模型&#xff08;LLM&#xff09;服务工具…

替换Windows AD时,网络准入场景如何迁移对接国产身份域管?

Windows AD是迄今为止身份管理和访问控制领域的最佳实践&#xff0c;全球约90%的中大型企业采用AD作为底层数字身份基础设施&#xff0c;管理组织、用户、应用、网络、终端等IT资源。但随着信创建设在党政机关、金融、央国企、电力等各行各业铺开&#xff0c;对Windows AD域的替…

swagger简单使用学习

注意 一下基于spring-boot 3.0.2版本&#xff0c;该版本不支持springfox-swagger2 2.9.2会报错&#xff0c;无法访问swagger 安装 在pomx文件中添加对应的依赖 <!-- swagger --><dependency><groupId>org.springdoc</groupId><artifactId>spr…

Superset二次开发之Select 筛选器源码分析

路径&#xff1a;superset-frontend/src/filters/components/Select 源码文件&#xff1a; 功能点&#xff1a; 作用 交互 功能 index.ts作为模块的入口点,导出其他文件中定义的主要组件和函数。它使其他文件中的导出可以被外部模块使用。 SelectFilterPlugin.tsx 定义主要…

PostgreSQL的repmgr工具介绍

PostgreSQL的repmgr工具介绍 repmgr&#xff08;Replication Manager&#xff09;是一个专为 PostgreSQL 设计的开源工具&#xff0c;用于管理和监控 PostgreSQL 的流复制及实现高可用性。它提供了一组工具和实用程序&#xff0c;简化了 PostgreSQL 复制集群的配置、维护和故障…

python的sqlalchemy使用@contextmanager来定义上下文管理器

Python通过函数名调用函数的几种场景 华为或超聚变服务器安装linux 你知道":“和”//"在python里面代表什么吗&#xff1f;这篇《python运算符》介绍&#xff0c;你肯定不想错过 SQLAlchemy通过contextmanager简化回滚操作 如何理解python的sqlalchemy这种orm框架&am…

大数据采集与分析实训室解决方案

随着信息技术的飞速发展&#xff0c;大数据已成为推动产业升级、社会进步的重要力量。为了培养适应未来社会需求的大数据专业人才&#xff0c;构建一套科学、先进的大数据采集与分析实训室解决方案显得尤为重要。为此&#xff0c;唯众特推出全面升级的大数据采集与分析实训室解…

Java项目——苍穹外卖(一)

Entity、DTO、VO Entity&#xff08;实体&#xff09; Entity 是表示数据库表的对象&#xff0c;通常对应数据库中的一行数据。它通常包含与数据库表对应的字段&#xff0c;并可能包含一些业务逻辑。 DTO&#xff08;数据传输对象&#xff09; 作用&#xff1a;DTO 是用于在…

Leetcode Hot 100刷题记录 -Day10(合并区间)

合并区间 问题描述&#xff1a; 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti,endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 示例 1&#xff1a; 输入&…