从零开始学习 JS APL(一):完整指南和实例解析

本章内容主要是按一下来:

操作DOM BOM
比如 控制网页元
素交互等各种网页
交互效果

以下是我总结笔记(仅供参考)

webAPL

获取DOM对象

变量声明有三个 var let 和 const
我们应该用那个呢?
首先var 先排除,老派写法,问题很多,可以淘汰掉…
let or const ?
建议: const 优先,尽量使用const,原因是:
Ø const 语义化更好
Ø 很多变量我们声明的时候就知道他不会被更改了,那为什么不用 const呢?
Ø 实际开发中也是,比如react框架,基本const
l 如果你还在纠结,那么我建议:
l 有了变量先给const,如果发现它后面是要被修改的,再改为let

// 获取单个 DOM 对象
const element = document.querySelector('#myElement');

// 获取多个 DOM 对象
const elements = document.querySelectorAll('.myElements');
 
const elements = document.querySelectorAll('.myElements');

 !!注意一点是返回的是伪数组

这里给大家普及以下const 和let的区别

在最新的 ES6 语法中,constlet 是两种定义变量的方式,与之前的 var 相对应。

  • const 定义的变量是一个常量,一旦被赋值后就不能再次被修改,而且必须进行初始化赋值操作。例如:

    const a = 10;
    // a = 20; // Error: 列出 "TypeError: Assignment to constant variable." 
    
  • let 定义的变量是一个块级作用域的变量,允许被修改,如同 C、C++ 或 Java 的变量声明方式。例如:

    let b = 10;
    b = 20; // OK: 变量可以被修改
    {
      let b = 30; // OK: 定义了一个新的块级变量
    }
    
  • constlet 都是块级作用域的,在 for 循环或 if 语句中都可以定义并使用。在同一个作用域中,不允许重复定义同名变量。

操作元素内容

 根据CSS选择器来获取DOM元素 (重点)

选择匹配的第一个元素
语法:
参数:
包含一个或多个有效的CSS选择器 字符串
返回值:
CSS选择器匹配的第一个元素,一个 HTMLElement对象。
如果没有匹配到,则返回null
举例说明:

根据 CSS 选择器来获取 DOM 元素是常用的前端开发技巧之一,这可以让我们通过 CSS 中的选择器来获取元素,并进行操作。

以下是一些常见的 CSS 选择器:
  • 根据 id 获取元素:
    const element = document.querySelector('#myId');
    
  • 根据 class 获取元素:
    const element = document.querySelector('.myClass');
    
  • 根据标签名获取元素:
    const element = document.querySelector('div');
    
  • 根据属性值获取元素:
    const element = document.querySelector('[data-my-attribute="myValue"]');
    
  • 获取多个元素(返回一个 Nodelist 对象):
    const elements = document.querySelectorAll('.myClass');
    
上述示例中,document.querySelector()document.querySelectorAll() 返回的是一个 DOM 元素或节点列表,我们可以通过这些元素或节点列表进行操作,如修改样式、绑定事件等。
 练习题:
请控制台依次输出 3个 li 的 DOM对象

 
大家也可以去参考文档点击看文档

使用最新的 ES6 语法,可以通过以下方式操作元素内容:

  1. 获取元素内容:
const element = document.querySelector('#my-element');
const content = element.innerHTML; // 获取元素内部的 HTML 内容
const text = element.textContent; // 获取元素内部的文本内容

  1. 设置元素内容:
const element = document.querySelector('#my-element');
element.innerHTML = '<p>New HTML content</p>'; // 设置元素内部的 HTML 内容
element.textContent = 'New text content'; // 设置元素内部的文本内容

  1. 添加元素内容:
const element = document.querySelector('#my-element');
element.insertAdjacentHTML('beforeend', '<p>New HTML content</p>'); // 在元素的最后插入 HTML 内容
element.append('New text content'); // 在元素的最后插入文本内容

以上就是最新的 ES6 语法中操作元素内容的一些常用方法。需要注意的是,对于一些特殊的内容操作,比如通过 JavaScript 动态创建元素、绑定事件等,可能还需要使用一些传统的 DOM 操作方式。

操作元素属性

使用最新的 ES6 语法,可以通过以下方式操作元素属性:

  1. 获取元素属性:

const element = document.querySelector('#my-element');
const attrValue = element.getAttribute('data-my-attribute');
  1. 设置元素属性:

const element = document.querySelector('#my-element');
element.setAttribute('data-my-attribute', 'new-value');
  1. 移除元素属性:

const element = document.querySelector('#my-element');
element.removeAttribute('data-my-attribute');
  1. 操作元素样式:

const element = document.querySelector('#my-element');
element.style.backgroundColor = 'red';

以上就是最新的 ES6 语法中操作元素属性的一些常用方法。需要注意的是,对于一些新属性或者不常用的属性,可能还是需要使用传统的 DOM 操作方式。

定时器-间歇函数

目标:能够使用定时器函数重复执行代码
定时器函数可以开启和关闭定时器
1. 开启定时器


Ø 作用:每隔一段时间调用这个函数
Ø 间隔时间单位是毫秒

注意:
1. 函数名字不需要加括号
2. 定时器返回的是一个id数字
 定时器函数可以开启和关闭定时器
2. 关闭定时器

最后给大家一个练习题:

需求:按钮60秒之后才可以使用
分析:
①:开始先把按钮禁用(disabled 属性)
②:一定要获取元素
③:函数内处理逻辑
秒数开始减减
按钮里面的文字跟着一起变化
如果秒数等于0 停止定时器 里面文字变为 同意 最后 按钮可以点击(稍后我会发布这道题的代码!)
 

综合案例
 需求:每隔一秒钟切换一个图片
分析:
①:准备一个数组对象,里面包含详细信息(素材包含)
②:获取元素
③:设置定时器函数
设置一个变量++
找到变量对应的对象
更改图片、文字信息
激活小圆点:移除上一个高亮的类名,当前变量对应的小圆点添加类
④:处理图片自动复原从头播放(放到变量++后面,紧挨)
如果图片播放到最后一张, 就是大于等于数组的长度
则把变量重置为0(如有需要这道题代码请联系我!)

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

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

相关文章

UDP协议实现群聊

代码&#xff1a; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.net.*; import java.io.IOException; import java.lang.String; public class liaotian extends JFrame{ private static final int DEFAULT_PORT8899; private J…

机器的深度强化学习算法可以被诱导

设计一个好的奖励函数是机器深度强化学习算法的关键之一。奖励函数用于给予智能体&#xff08;机器&#xff09;在环境中采取不同行动时的反馈信号&#xff0c;以指导其学习过程。一个好的奖励函数应该能够引导智能体朝着期望的行为方向学习&#xff0c;并尽量避免潜在的问题&a…

使用ASIRequest库进行Objective-C网络爬虫示例

在Objective-C中&#xff0c;ASIHTTPRequest是一个非常受欢迎的库&#xff0c;用于处理HTTP请求。它可用于下载网页内容&#xff0c;处理API请求&#xff0c;甚至进行复杂的网络交互。下面是一个简单的示例&#xff0c;展示了如何使用ASIHTTPRequest库来爬取网页代码。 首先&a…

【ROS2指南-9】Bag的record和play操作

目标&#xff1a;记录在某个话题上发布的数据&#xff0c;以便您可以随时回放和检查它。 教程级别&#xff1a;初学者 时间&#xff1a; 10分钟 内容 背景 先决条件 任务 1 设置 2 选择一个主题 3 ros2包记录 4 ros2 包信息 5 ros2包玩 概括 下一步 相关内容 背景 …

Java 简易版 TCP UDP聊天

客户端 import java.io.*; import java.net.Socket; import java.util.Date; import javax.swing.*;public class MyClient {private JFrame jf;private JButton jBsend;private JTextArea jTAcontent;private JTextField jText;private JLabel JLcontent;private Date data;pr…

自定义类加载器

通过继承ClassLoader类&#xff0c;重写findClass方法&#xff0c;实现自定义类加载器。 一、自定义类加载器 package com.molange.JavaSE.myclassloader;import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; impor…

MATLAB - 绘制立体图(平面+水深)

目录 代码结果 代码 % 在 X-Y 平面上绘图 % 正常绘制平面图 [X,Y,Z] peaks; contour(X,Y,Z,20); hold on% ****重点******************************************** % 改为三维视图&#xff0c;具体可以help % view(3); %此时的平面图对应z0 &#xff1b;默认az-37.5&#x…

大模型在企业知识库场景的落地思考

一、引言 在这个信息爆炸的时代&#xff0c;企业的知识库已不再是简单的数据堆砌&#xff0c;而是需要智能化、高效率的知识管理和利用。大模型作为AI领域的一个重要突破&#xff0c;正逐步成为企业知识库管理的强大助力。通过前面一段时间对于大模型在企业落地的深入调研和实…

Linux---逻辑卷管理

本章主要介绍逻辑卷的管理。 了解什么是逻辑卷创建和删除逻辑卷扩展逻辑卷缩小逻辑卷逻辑卷快照的使用 前面介绍了分区的使用&#xff0c;如果某个分区空间不够&#xff0c;想增加空间是非常困难的。所以&#xff0c;建议尽可能使用逻辑卷而非普通的分区&#xff0c;因为逻辑卷…

【C语言】数据在内存中的存储

目录 练笔 整型数据的存储&#xff1a; char 型数据——最简单的整型 整型提升&#xff1a; 推广到其他整形&#xff1a; 大小端&#xff1a; 浮点型数据的存储&#xff1a; 存储格式&#xff1a; 本篇详细介绍 整型数据&#xff0c;浮点型数据 在计算机中是如何储存的。…

Redis和MySQL双写一致性实用解析

1、背景 先阐明一下Mysql和Redis的关系&#xff1a;Mysql是数据库&#xff0c;用来持久化数据&#xff0c;一定程度上保证数据的可靠性&#xff1b;Redis是用来当缓存&#xff0c;用来提升数据访问的性能。 关于如何保证Mysql和Redis中的数据一致&#xff08;即缓存一致性问题…

RT-DETR手把手教程:NEU-DET钢材表面缺陷检测任务 | 不同网络位置加入EMA注意力进行魔改

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文独家改进&#xff1a;本文首先复现了将EMA引入到RT-DETR中&#xff0c;并跟不同模块进行结合创新&#xff1b;1&#xff09;多种Rep C3结合&#xff1b;2&#xff09;直接作为注意力机制放在网络不同位置&#xff1b; NEU-DET钢材…

C#excel导入dategridview并保存到数据库/dategridview增加一行或几行一键保存数据库

excel导入到dategridview显示并保存到数据库 dategridview增加一行或几行一键保存数据库 ExcelHelper类(这个要导入NPOI包) using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System; using System.Collections.Generic; using Syste…

java多人聊天

服务端 package 多人聊天;import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList;…

用 Bytebase 做数据库 schema 迁移

数据库 schema 迁移指修改管理数据库结构的变更&#xff0c;包括为数据库添加视图或表、更改字段类型或定义新约束。Bytebase 提供了可视化 GUI 方便迁移数据库 schema&#xff0c;本教程将展示如何使用 Bytebase 为 schema 迁移配上 SQL 审核&#xff0c;自定义审批流&#xf…

解决Could not establish connection to : XHR failed

解决Could not establish connection to : XHR failed 问题描述 用vscode用远程连接服务器时总报上面的错误&#xff0c;用xshell和Xftp和vscode终端都可以连上&#xff0c;但是用vscode的ssh连接缺总报错&#xff0c;导致无法连接服务器进行代码调试 一、原因 原因可能是在…

Python tkinter 之文件对话框(filedialog)

文章目录 1 文件1.1 获取单个文件名称&#xff1a;askopenfilename()1.2 获取多个文件名称&#xff1a;askopenfilenames()1.3 获取单个文件属性&#xff1a;askopenfile()1.4 获取多个文件属性&#xff1a;askopenfiles()1.5 获取保存文件的路径&#xff1a;asksaveasfilename…

树莓派4B iio子系统 mpu6050

编写基于iio的mpu6050 遇到的问题&#xff0c;在读取数据时&#xff0c;读出来的数据不能直接拼接成int类型 需要先将其转换成short int&#xff0c;再转换成int 效果如图所示 注&#xff1a;驱动是使用的modprobe加载的 简单画的思维导图 设备树修改部分&#xff1a; …

大模型发展对教育领域的巨大影响

摘要&#xff1a; 教育是一个复杂而微妙的领域;有效的教学涉及对学生认知的推理&#xff0c;并应反映学生的学习目标。基础模型的性质在这里提出了在人工智能教育领域尚未实现的承诺&#xff1a;虽然教育中的某些许多数据流单独地过于有限&#xff0c;无法训练基础模型&#xf…

【linux系统编程】编辑器gcc/g++

目录 Linux下的编辑器 介绍&#xff1a; 1&#xff0c;编辑器gcc/g 1-1&#xff0c;系统的编译过程 1-2&#xff0c;预处理过程 1-3&#xff0c;编译过程 1-4&#xff0c;汇编过程 1-5&#xff0c;链接过程 Linux下的编辑器 介绍&#xff1a; Linux系统下可支持很多高…