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

news2024/12/25 12:25:25

文章目录

  • 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/2112184.html

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

相关文章

Vivado 约束

步骤5&#xff1a;保存约束 约束管理是设计流程的重要一步&#xff0c;Vivado设计套件 为您提供了在现有约束文件中添加新约束、覆盖的灵活性 现有约束&#xff0c;或创建新的约束文件以跟踪设计更改或完成 缺少约束。 您为设计创建了一些定时异常&#xff0c;但这些异常仅存在…

​​NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南002

继续,执行pom.xml引入依赖以后,发现以下几种报错: 可以看到在下载aws-java-sdk-bundle 1.12.710版本的时候报错了 可以看到日志信息,就是在阿里云上下载的,因为阿里云上缺少这个jar包 aws-java-sdk-bundle-1.12.710.jar 这个jar包,我还特意去阿里云上查询了一下 https://deve…

从零到一:Java三层架构下的图书馆管理系统开发指南

引言 使用JavaSE相关知识完成一个以三层架构为设计规范的图书管理系统&#xff0c;不包括前端页面&#xff08;使用main方法Scanner()模拟用户输入&#xff09;&#xff0c;目的是为了基于一个项目快速了解三层架构的项目设计规范的实践。 开发流程 确认需求导入相关的jar包和…

jmeter 梯度测试 如何查看TPS、RT指标

TPS 服务器处理请求总数/花费的总时间 149371 &#xff08;请求量&#xff09; 113&#xff08;1分53秒&#xff09;1321/秒 跟汇总报告的吞吐量差不多&#xff0c;可以认为吞吐量TPS 平均值&#xff0c;中位数&#xff0c;最大值&#xff0c;最小值的单位都是毫秒ms 下载插…

用Git把本地仓库上传到远程仓库

用Git把本地仓库上传到远程仓库 GitHub创建远程仓库 在创建新仓库界面里输入你的仓库名后点击Create repository就好了。 创建本地项目 当你已经有一个项目后在命令行输入如下指令即可 git init git commit -m "first commit" git branch -M main git remote a…

寄存器映射及地址计算(STM32F407)

上篇文章介绍了存储器映射&#xff08;存储器映射&#xff08;STM32F407&#xff09;-CSDN博客&#xff09;&#xff0c;本文介绍寄存器映射的基本概念。 1、寄存器映射简介 寄存器是一类特殊的存储器&#xff0c;它的每个位都有特定的功能&#xff0c;可以实现对外设/功能的…

ubuntu16.04下qt5.7.1添加对openssl的支持

文章目录 前言一、编译安装openssl二、编译qt5.7.1三、配置qtcreator开发环境四、demo 前言 最近工作中要求客户端和服务端通过ssl加密通信,其中客户端是qt编程,服务端是linux编程.我的开发环境是ubuntu16.04;运行环境是debian9.13,是基于gnu的linux操作系统,64位arm架构. 一…

【数据库】|子查询

子查询 什么叫子查询&#xff1f;如何实现子查询&#xff1f; 定义&#xff1a;什么叫子查询&#xff0c;也就是先执行子查询&#xff0c;后执行父查询 ❓✅面试题&#xff1a;如何实现替换&#xff0c;执行顺序&#xff1f; 1、使用子查询&#xff0c;因为子查询会先执行子…

大语言模型LLM权重4bit向量量化(Vector Quantization)/查找表量化基本原理

参考 https://apple.github.io/coremltools/docs-guides/source/opt-palettization-overview.html https://apple.github.io/coremltools/docs-guides/source/opt-palettization-algos.html Apple Intelligence Foundation Language Models 苹果向量量化&#xff1a; DKM:…

深度学习基础--卷积的变种

随着卷积同经网络在各种问题中的广泛应用&#xff0c;卷积层也逐渐衍生出了许多变种&#xff0c;比较有代表性的有&#xff1a; 分组卷积( Group Convolution )、转置卷积 (Transposed Convolution) 、空洞卷积( Dilated/Atrous Convolution )、可变形卷积( Deformable Convolu…

协程的原理与实现:GMP源码走读

在计算机科学领域&#xff0c;尤其是在现代软件开发中&#xff0c;高并发处理能力是衡量技术架构性能的关键指标之一。Go语言&#xff0c;以其简洁的语法和内置的协程支持&#xff0c;为开发者提供了一套高效且易于使用的并发编程模型。本文深入剖析了Go语言协程的原理与其实现…

erlang学习:用ETS和DETS存储数据3,保存元组到磁盘

学习内容 ETS表把元组保存在内存里&#xff0c;而DETS提供了把Erlang元组保存到磁盘上的方法。DETS的最大文件大小是2GB。DETS文件必须先打开才能使用&#xff0c;用完后还应该正确关闭。如果没有正确关闭&#xff0c;它们就会在下次打开时自动进行修复。因为修复可能会花很长…

软件测试学习笔记丨Pytest的使用

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/22158 1. 简介 pytest是一个成熟的全功能python测试框架测试用例的skip和xfail&#xff0c;自动失败重试等处理能够支持简单的单元测试和复杂的功能测试&#xff0c;还可以用来做selenium/ap…

路由器的固定ip地址是啥意思?固定ip地址有什么好处

‌在当今数字化时代&#xff0c;‌路由器作为连接互联网的重要设备&#xff0c;‌扮演着举足轻重的角色。‌其中&#xff0c;‌路由器的固定IP地址是一个常被提及但可能让人困惑的概念。‌下面跟着虎观代理小二一起将深入探讨路由器的固定IP地址的含义&#xff0c;‌揭示其背后…

元学习之如何学习

首先第一个步骤&#xff08;如图1所示&#xff09;是我们的学习算法里要有一些要被学的东西&#xff0c;就像在 机器学习里面神经元的权重和偏置是要被学出来的一样。在元学习里面&#xff0c;我们通常会考虑要 让机器自己学习网络的架构&#xff0c;让机器自己学习初始化的参数…

echarts 水平柱图 科技风

var category [{ name: "管控", value: 2500 }, { name: "集中式", value: 8000 }, { name: "纳管", value: 3000 }, { name: "纳管", value: 3000 }, { name: "纳管", value: 3000 } ]; // 类别 var total 10000; // 数据…

RockyLinux8.9上yum安装redis6

我百思不得其解的一个问题 我想在RockyLinux8.9上安装redis6&#xff0c;通过yum list | grep redis看到的redis版本只有redis5 appstream-official仓库是我新加的&#xff0c;这里先不管 于是我通过浏览器访问appstream仓库https://dl.rockylinux.org/vault/rocky/8.9/AppSt…

MQTT broker搭建并用SSL加密

系统为centos&#xff0c;基于emqx搭建broker&#xff0c;流程参考官方。 安装好后&#xff0c;用ssl加密。 进入/etc/emqx/certs,可以看到 分别为 cacert.pem CA 文件cert.pem 服务端证书key.pem 服务端keyclient-cert.pem 客户端证书client-key.pem 客户端key 编辑emqx配…

ANSA联合abaqus的转动副创建方式

下面链接详细介绍了ANSA联合Abaqus创建转动副的过程&#xff1a; https://www.bilibili.com/video/BV1cb421b7z9/?spm_id_from333.880.my_history.page.clickhttps://www.bilibili.com/video/BV1cb421b7z9/?spm_id_from333.880.my_history.page.click

复盘高质量Vision Pro沉浸式视频的制作流程与工具

在探索虚拟现实(VR)和增强现实(AR)技术的过程中,高质量的沉浸式体验是至关重要的。最近,国外开发者Dreamwieber在其作品中展示了如何使用一系列工具和技术,创造出令人震撼的Vision Pro沉浸式视频。本文将详细复盘Dreamwieber的工作流,希望能为从事相关领域的开发者们提…