WebAPI (一) 基本认知;querySelector选取dom对象;操作元素属性、表单属性;自定义属性;定时器之间歇函数

news2024/11/15 8:35:56

文章目录

  • 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.coloradmin.cn/o/2110715.html

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

相关文章

简单比较 http https http2,我们要如何把http升级为https

&#x1f9d1;‍&#x1f4bb; 写在开头 点赞 收藏 学会&#x1f923;&#x1f923;&#x1f923; 什么是HTTP 超文本传输​​协议&#xff08;HTTP&#xff09;是用于传输诸如HTML的超媒体文档的应用层协议。它被设计用于Web浏览器和Web服务器之间的通信&#xff0c;但它也…

《系统架构设计师教程(第2版)》第17章-通信系统架构设计理论与实践-02-广域网网络架构

文章目录 1. 概念和组成2. 网络架构2.1 单核心广域网3.2 双核心广域网3.3 环型广域网3.4 半冗余广域网3.5 对等子域广域网3.6 层次子域广域网 1. 概念和组成 组成&#xff08;以功能看&#xff09; 通信子网&#xff1a;将分布在不同地区的局域网或计算机系统互连起来资源子网&…

阿里P7大牛整理自动化测试高频面试题

最近好多粉丝咨询我&#xff0c;有没有软件测试方面的面试题&#xff0c;尤其是Python自动化测试相关的最新面试题&#xff0c;所以今天给大家整理了一份&#xff0c;希望能帮助到你们。 接口测试基础 1、公司接口测试流程是什么&#xff1f; 从开发那边获取接口设计文档、分…

vscode 使用git bash,路径分隔符缺少问题

window使用bash --login -i 使用bash时候&#xff0c;在系统自带的terminal里面进入&#xff0c;测试conda可以正常输出&#xff0c;但是在vscode里面输入conda发现有问题 bash: C:\Users\marswennaconda3\Scripts: No such file or directory实际路径应该要为 C:\Users\mars…

【2024数模国赛赛题思路公开】国赛C题第三套思路丨无偿自提

C题参考思路 C题是一道优化问题&#xff0c;目的是根据题目所给的种植限制条件以及附件数据建立目标条件优化模型&#xff0c;优化种植策略&#xff0c;有利于方便田间管理&#xff0c;提高生产效益&#xff0c;减少各种不确定因素可能造成的种植风险。整个题目最重要的问题在…

Live800:全方位客户服务:从售前到售后的无缝衔接

在现今这个瞬息万变的商业世界里&#xff0c;企业与客户之间的关系已经超越了简单的买卖交易&#xff0c;转而成为了一种更加紧密、持久的互动。全方位客户服务正是这一趋势下的产物&#xff0c;它如同一条温暖的纽带&#xff0c;将企业的关怀与客户的需求紧密相连&#xff0c;…

搭贝低代码平台:工程项目管理系统的智能化变革

在现代建筑工程中&#xff0c;项目管理的复杂性和挑战不断增加&#xff0c;传统的项目管理方式往往难以满足快速变化的市场需求和高效管理的要求。搭贝低代码平台的工程项目管理系统&#xff08;EPM&#xff09;通过智能化和自动化手段&#xff0c;帮助企业克服这些挑战&#x…

GitHub图床

GitHub图床 文章目录 GitHub图床图床介绍Github访问GitHub手动修改hostsgithub520 加速器创建账户创建仓库创建token PicGoTypora 图床介绍 图床 存放图片的地方 为什么设置图床呢 在我认识图床之前, 有一个问题 [^放在typora上面的图片, 其实是一个链接, 并且将图片存放在本地…

跨越技术壁垒:EasyCVR为何选择支持FMP4格式,重塑视频汇聚平台标准

随着物联网、大数据、云计算等技术的飞速发展&#xff0c;视频监控系统已经从传统的安防监控扩展到智慧城市、智能交通、工业制造等多个领域。视频流格式作为视频数据传输与存储的基础&#xff0c;其兼容性与效率直接影响到整个视频监控系统的性能。 在众多视频流格式中&#…

基于时序差分的无模型强化学习:Q-learning 算法详解

目录 一、无模型强化学习中的时序差分方法与Q-learning1.1 时序差分法1.2 Q-learning算法状态-动作值函数&#xff08;Q函数&#xff09;Q-learning 的更新公式Q-learning 算法流程Q-learning 的特点 1.3 总结 一、无模型强化学习中的时序差分方法与Q-learning 动态规划算法依赖…

人工智能时代,程序员如何保持竞争优势?

在当前人工智能技术飞速发展的背景下&#xff0c;程序员的工作方式与职业角色正经历着前所未有的深刻变革。随着 ChatGPT、Midjourney、Claude 等 AIGC 技术的迅速崛起&#xff0c;AI 辅助编程工具的应用日益广泛&#xff0c;极大地改变了编程的传统模式。这一趋势不仅提升了编…

moonlight串流配置太复杂?推荐一款无需配置的宝藏串流软件GameViewer远程

moonlight支持将PC游戏实时串流到安卓、iOS、Apple TV、Chromebook、PS Vita甚至Raspberry Pi等设备上&#xff0c;让用户无需携带笨重的游戏设备&#xff0c;即可随时随地进行游戏。 但是moonlight的门槛较高&#xff0c;很多串流新手不懂得如何配置&#xff0c;同时如果没有I…

云计算之云原生(下)

目录 接上文 二、消息队列Kafka 2.1 消息队列 Kafka&#xff1a;企业级大数据消息通道 2.2 系统架构 2.3 更稳定Kafka – 自研双引擎支持 2.4 更高性能Kafka – 秒级分区扩容 2.5 客户端报错及解决方案 三、云原生可观测体系 3.1 可观测性是系统稳定性保障的必要手段 …

计算机毕业设计推荐-基于Java的乡村农家乐管理系统

&#x1f496;&#x1f525;作者主页&#xff1a;毕设木哥 精彩专栏推荐订阅&#xff1a;在 下方专栏&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; 实战项目 文章目录 实战项目 一、基于Java的乡村农家乐管理系…

算法基础-快速排序

快速排序 i、j不相邻时&#xff0c;指向同一个下标 i、j相邻时&#xff0c;j 比 i 小 不管是否相邻&#xff0c;最后一次循环的if条件一定是 i>j 来退出循环&#xff0c;即最后一次的 if(i<j) 不执行 按照 j 来划分,x a[l r >> 1]&#xff0c;分为 [ l&#xff0…

QGraphicsView、QGraphicsScene和QGraphicsItem图形视图框架(二)疑难杂症

疑难杂症1 1.问题&#xff1a; 设置场景的背景图片时&#xff0c;采用setBackgroundBrush()方法和重写drawBackground()函数得到的结果很不一样&#xff0c;而且通过setSceneRect设置场景原点位置之后得到的结果也有很大区别。 如下图 第一个和第三个中重写了QGraphicsScene…

论文解读:《LAMM: Label Alignment for Multi-Modal Prompt Learning》

系列文章目录 文章目录 系列文章目录LAMM: Label Alignment for Multi-Modal Prompt Learning学习1、论文细节理解1、研究背景2、论文贡献3、方法框架4、研究思路5、实验6、限制 LAMM: Label Alignment for Multi-Modal Prompt Learning学习 1、论文细节理解 VL模型和下游任务…

Python输出多位数

作者制作不易&#xff0c;关注、点赞、收藏一下吧&#xff01; 1.第一种:正常直接用循环 以三位数为例: for i in range(100, 1000):print(i) 运行结果( 展示一部分 ): 图1-1 2.第二种:特定位数 以三位数为例: for i in range(1, 5): # 括号内指定那个位的范围for j in r…

MySQL基础(5)- 运算符

目录 一、算数运算符 1.加法运算符 2.乘除运算符 3.取模运算 二、比较运算符 1. <> <> ! < < > > 2.IS NULL \ IN NOT NULL \ ISNULL 3.LEAST() \ GREATEST() 4.BETWWEEN 条件下界1 AND 条件上界2 5.in (set)\ not in (set) 6.LIKE :模糊查…