js基础-数组-事件对象-日期-本地存储

一、大纲

一、获取元素位置

在JavaScript中,获取一个元素在页面上的位置可以通过多种方法实现。以下是一些常见的方法:

  1. getBoundingClientRect()

    getBoundingClientRect() 方法返回元素的大小及其相对于视口的位置。它提供了元素的lefttoprightbottom属性,这些属性表示元素在视口中的位置。

     

    var rect = document.getElementById('myElement').getBoundingClientRect(); console.log(rect.left, rect.top); // 元素相对于视口左上角的坐标

  2. elementFromPoint(x, y)

    elementFromPoint(x, y) 方法返回位于页面上给定坐标(x, y)的元素。这个方法属于document对象,因此可以直接在document上调用。

     

    var element = document.elementFromPoint(x, y); console.log(element); // 返回位于(x, y)坐标的元素

  3. offsetTopoffsetLeft

    offsetTopoffsetLeft 属性返回元素的顶部和左侧边缘相对于其最近的定位的祖先元素的偏移。

     

    var element = document.getElementById('myElement'); console.log(element.offsetTop, element.offsetLeft); // 元素相对于其定位的祖先元素的偏移

  4. getComputedStyle()

    getComputedStyle() 方法返回一个对象,该对象包含元素的所有当前计算后的样式属性的值,包括positiontopleft等。

     

    var style = window.getComputedStyle(document.getElementById('myElement')); console.log(style.position, style.top, style.left); // 获取元素的计算后样式

  5. position 属性

    position 属性可以告诉你元素的定位方式(如staticrelativeabsolutefixedsticky),这有助于你了解元素的位置是如何确定的。

     复制 

    var element = document.getElementById('myElement'); console.log(element.style.position); // 获取元素的定位方式

二、日期

1.newDate()

2.显示格式

3.时间戳

推荐+

案例:

在编程和计算机科学中,时间戳是一个表示特定时刻的数字。在不同的上下文中,时间戳可以有不同的含义和格式,以下是一些常见的时间戳概念:

  1. Unix 时间戳:

    • 这是最常见的时间戳格式,表示从1970年1月1日UTC(协调世界时)开始的秒数(不包括闰秒)。在JavaScript中,可以通过Date.now()函数获取当前的Unix时间戳。
     

    var timestamp = Date.now(); // 获取当前的Unix时间戳(毫秒)

    如果需要秒为单位的Unix时间戳,可以使用Date对象的getTime()方法或Date.UTC()方法。

     

    var timestampInSeconds = Math.floor(Date.now() / 1000); var timestampInSeconds = new Date().getTime() / 1000; var timestampInSeconds = Date.UTC(year, month, day, hour, minute, second);

  2. ISO 8601 时间戳:

    • 这是一种使用日期和时间的国际标准表示法,格式通常为YYYY-MM-DDTHH:mm:ss.sssZ,其中T是一个分隔符,Z表示UTC时区(或用+hh:mm-hh:mm表示时区偏移)。
     

    var timestamp = new Date().toISOString(); // 转换为ISO格式的时间字符串

  3. 性能时间戳 (Performance Timestamp):

    • 在Web开发中,performance.now()可以提供比Date.now()更高精度的时间戳,通常用于测量性能。
     

    var performanceTimestamp = performance.now(); // 获取高精度时间戳

  4. 时间戳转换:

    • 可以将Unix时间戳转换为更易读的日期格式,反之亦然。
     

    var date = new Date(timestamp); // 将Unix时间戳转换为Date对象 var timestamp = date.getTime(); // 将Date对象转换为Unix时间戳

  5. 时间戳的用途:

    • 时间戳常用于记录事件发生的时间点,如服务器日志、数据库记录、用户操作时间等。
    • 在分布式系统中,时间戳用于同步事件顺序和解决冲突。
    • 在性能分析中,时间戳用于测量代码执行时间。
  6. 时间戳的存储:

    • 时间戳通常以整数或浮点数存储,取决于所需的时间精度。
  7. 时间戳的时区问题:

    • 时间戳通常表示为UTC时间,但在实际应用中,需要考虑时区转换。

在JavaScript中,处理时间戳时,需要注意时区和精度问题,以确保正确地表示和处理时间。

三、dom节点(dom树)

DOM(文档对象模型,Document Object Model)是HTML和XML文档的编程接口。它将网页结构化为一个由节点和对象(如元素、属性和文本)组成的树状结构,允许开发人员以编程方式访问和操作网页内容。

在DOM树中,每个节点(node)代表文档中的一个对象或结构,以下是一些常见的节点类型:

  1. 元素节点(Element node):

    • 代表HTML中的一个元素,如<div><p><a>等。
  2. 属性节点(Attribute node):

    • 代表元素的一个属性,如class="example"id="myId"
  3. 文本节点(Text node):

    • 包含元素或属性的文本内容,如<p>这是一个文本节点。</p>中的“这是一个文本节点。”
  4. 注释节点(Comment node):

    • 包含文档的注释,它们在浏览器中不显示,但可以在HTML源代码中看到。
  5. 文档类型节点(DocumentType node):

    • 代表文档类型声明,如<!DOCTYPE html>
  6. 文档节点(Document node):

    • 代表整个文档,是DOM树的根节点。
  7. 文档片段节点(DocumentFragment node):

    • 一个轻量级的DOM节点,用作DOM树的临时容器,常用于批量操作。
  8. CDATA节节点(CDATASection node):

    • 包含不应由XML解析器解析的文本。

在JavaScript中,可以使用DOM API来创建、修改、删除和查询DOM节点。以下是一些基本的DOM操作:

创建节点:

var newNode = document.createElement('div');
添加节点:

parentElement.appendChild(newNode);
删除节点:

parentElement.removeChild(oldNode);
替换节点:

parentElement.replaceChild(newNode, oldNode);
查询节点:

var element = document.getElementById('myId');
修改内容:

element.textContent = '新内容';
element.innerHTML = '<div>新HTML内容</div>';
获取属性:

var attributeValue = element.getAttribute('class');
设置属性:

element.setAttribute('class', 'newValue');
监听事件:

element.addEventListener('click', function() {
  console.log('元素被点击了');
});

M端事件(移动端)

四、location当前浏览上下文的一些信息

在JavaScript中,location 对象是一个内置对象,它提供了当前浏览上下文的一些信息,以及一些用于导航到不同的文档的方法。location 对象是 Window 对象的一部分,因此通常在浏览器环境中可以直接使用它。

以下是一些常用的 location 对象属性和方法:

location.href:

表示当前页面的URL。可以读取这个属性来获取当前页面的地址,也可以赋值一个新的URL来导航到另一个页面。
console.log(location.href); // 打印当前页面的URL
location.href = 'https://www.example.com'; // 重定向到新的URL
location.search:

表示URL中的查询字符串部分,即?后面的部分。
console.log(location.search); // 打印查询字符串
location.pathname:

表示URL中的路径部分。
console.log(location.pathname); // 打印URL路径
location.hash:

表示URL中的哈希部分,即#后面的部分。
console.log(location.hash); // 打印URL哈希
location.assign():

加载一个新的文档。
location.assign('https://www.example.com'); // 导航到指定的URL
location.replace():

用另一个文档替换当前的资源。与 assign() 不同的是,使用 replace() 后,新页面不会添加到浏览器的历史记录中。
location.replace('https://www.example.com'); // 替换当前页面
location.reload():

重新加载当前页面。默认情况下,它会从服务器重新加载页面,但也可以提供一个参数来控制是否要从缓存中加载。
location.reload(); // 从服务器重新加载当前页面
location.reload(true); // 强制从服务器加载
location.toString():

返回整个URL的字符串表示。
console.log(location.toString()); // 打印完整的URL
location.ancestorOrigins:

只读属性,返回一个包含当前页面所有祖先页面源点(origins)的数组。
console.log(location.ancestorOrigins); // 打印当前页面的祖先源点
通过使用 location 对象,你可以在JavaScript中实现页面跳转、获取当前页面的URL信息等操作。这些操作对于动态Web应用的开发非常重要。

1.跳转页面

2.路由基础(地址栏变化)

3.刷新界面 

五、navigator

navigator 是 Web 浏览器提供的 JavaScript 对象,它用于解决以下问题:

  1. 用户代理检测

    • 通过 navigator.userAgent 获取用户代理字符串,可以检测访问网页的浏览器类型、版本以及操作系统信息。
  2. 客户端能力检测

    • 了解客户端(浏览器)的能力,如是否支持 cookies(navigator.cookieEnabled)、是否处于在线状态(navigator.onLine)、支持的触摸点数(navigator.maxTouchPoints)等。
  3. 地理位置定位

    • 使用 navigator.geolocation 对象获取用户的地理位置信息,这在需要提供地理位置相关服务时非常有用,如地图服务、本地搜索等。
  4. 网络状态监测

    • 通过 navigator.onLine 属性监测用户的网络连接状态,这对于提供离线体验或网络状态提示很有帮助。
  5. 浏览器特性检测

    • 检测浏览器是否支持某些特定的特性或 API,如 WebRTC、Service Workers、WebGL 等。
  6. 国际化和本地化

    • 获取用户的语言偏好(navigator.language),以便提供本地化的网页内容。
  7. 跨源通信

    • 使用注册协议处理程序(navigator.registerProtocolHandler())实现跨源或跨应用的通信。
  8. 性能优化

    • 通过 navigator.sendBeacon() 方法在页面卸载时发送小体积的异步数据,减少对用户离开页面时的影响。
  9. 安全性和隐私

    • 了解浏览器的安全特性,如是否支持 HTTPS 或其他安全协议。
  10. 用户个性化体验

    • 根据用户代理数据(navigator.userAgentData)提供定制化的用户体验或提示用户升级浏览器。

navigator 对象为开发者提供了丰富的信息,使得开发者能够根据客户端的特性和能力来优化网页的功能和性能,提供更好的用户界面和交互体验。然而,使用 navigator 对象时也需要考虑隐私和安全问题,避免不当使用用户信息。

在实际开发中,一般会结合其他特性检测方法,如特性检测(feature detection)、能力检测(capability detection),以及避免过度依赖用户代理字符串,因为用户代理字符串可以被伪造,且仅依赖它进行检测可能导致误判。

在Web开发中,navigator 是 JavaScript 的一个全局对象,它提供了关于浏览器的信息,包括用户代理字符串(user agent string)、浏览器和操作系统的语言、以及浏览器插件等信息。navigator 对象是 Window 对象的一部分,因此可以直接在浏览器环境中访问。

以下是一些 navigator 对象的常用属性和方法:

以下是一些 navigator 对象的常用属性和方法:

navigator.userAgent:

返回一个包含浏览器名称和版本信息的字符串。
console.log(navigator.userAgent);
navigator.platform:

返回用户的操作系统的字符串表示。
console.log(navigator.platform);
navigator.language 或 navigator.languages:

返回用户偏好的语言代码。
console.log(navigator.language); // 例如: "en-US"
console.log(navigator.languages); // 返回一个包含用户偏好语言的数组
navigator.onLine:

返回一个布尔值,指示客户端是否连接到互联网。
console.log(navigator.onLine); // true 或 false
navigator.cookieEnabled:

返回一个布尔值,指示浏览器是否启用了 cookies。
console.log(navigator.cookieEnabled); // true 或 false
navigator.maxTouchPoints:

返回一个整数,表示设备支持的最大触摸点数。
console.log(navigator.maxTouchPoints);
navigator.geolocation:

提供了访问用户设备地理位置信息的接口。
navigator.geolocation.getCurrentPosition(
  function(position) {
    console.log(position.coords.latitude, position.coords.longitude);
  },
  function(error) {
    console.error(error);
  }
);
navigator.userAgentData:

提供了访问用户代理的品牌、版本以及其它相关信息的接口。
console.log(navigator.userAgentData.brands); // 返回浏览器品牌的数组
console.log(navigator.userAgentData.mobile); // 检查是否为移动设备
navigator.serviceWorker:

提供了与浏览器中的 Service Workers 交互的接口。
if ('serviceWorker' in navigator) {
  navigator.serviceWorker.register('/service-worker.js');
}
navigator.registerProtocolHandler():

允许网站注册自定义协议处理程序。
navigator.sendBeacon():

允许在页面卸载时异步传输小数据。

使用 navigator 对象时,需要注意隐私和安全问题,因为某些属性可能会泄露用户的敏感信息。例如,userAgent 字符串可以被用来识别用户使用的浏览器和操作系统,这可能会被用于不正当的跟踪或浏览器指纹识别。

此外,由于 navigator 对象包含很多属性和方法,不同的浏览器和操作系统可能会有不同的实现,因此在跨浏览器兼容性方面需要特别注意。

注意:立即执行函数写法!

六、histroy(前进后退)

七、本地存储

浏览器本地存储是Web应用程序中用于存储数据的一种机制,允许数据保留在用户的设备上,而不是在服务器上。这有助于提高性能、减少服务器负载,并可以改善用户在离线状态下的体验。以下是一些常见的浏览器本地存储技术:

  1. Cookie:

    • 最早的浏览器存储技术之一。Cookie 很小(一般不超过4KB),并且会在每次请求时被发送到服务器,适合存储会话信息或个人偏好设置。
  2. Web Storage (localStorage 和 sessionStorage):

    • 提供了超过Cookie的存储容量,localStorage 没有大小限制,但大多数浏览器限制在大约5MB左右。localStorage 用于长期存储整个网站的数据,而 sessionStorage 为单个会话提供数据存储,当用户关闭浏览器标签或窗口时,数据会被清除

  3. IndexedDB:是一种低等级的API用于客户端的存储,可以存储大量数据,包括字符串、文件、图片等。IndexedDB 提供了比 Web Storage 更复杂的数据存储能力,支持事务、键值对索引以及更复杂的查询。

localStorage 示例:

localStorage.setItem('username', 'JohnDoe');
var username = localStorage.getItem('username');
localStorage.removeItem('username');
sessionStorage 示例:

sessionStorage.setItem('viewState', 'someValue');
var viewState = sessionStorage.getItem('viewState');
sessionStorage.removeItem('viewState');

1.localStorage

注意:只能存字符串

复杂类型存储

转回来

// 存储对象
var obj = { name: "John", age: 30 };
localStorage.setItem('user', JSON.stringify(obj));

// 读取对象
var userStr = localStorage.getItem('user');
var userObj = JSON.parse(userStr);

2.sessionStorage

八、数组函数(map和join)

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

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

相关文章

[Linux][网络][高级IO][一][五种IO模型][同步通信][异步通信][非阻塞IO]详细讲解

目录 0.预备知识 && 思考问题1.五种IO模型0.形象理解五种模型1.阻塞IO2.非阻塞IO3.信号驱动IO4.多路转接/多路复用5.异步IO 2.高级IO重要概念1.同步通信 vs 异步通信2.阻塞 vs 非阻塞 3.非阻塞IO1.fcntl()2.实现SetNonBlock 0.预备知识 && 思考问题 网络通信本…

Poe是什么?怎样订阅Poe?

Poe&#xff08;全称“开放探索平台”&#xff0c;Platform for Open Exploration&#xff09;是一款由Quora开发的移动应用程序&#xff0c;于2022年12月推出。该应用程序内置建基于AI技术的聊天机器人&#xff0c;可供用户向机器人询问专业知识、食谱、日常生活&#xff0c;甚…

懒人网址导航源码v3.9

测试环境 宝塔Nginx -Tengine2.2.3的PHP5.6 MySQL5.6.44 为防止调试错误&#xff0c;建议使用测试环境运行的php与mysql版本 首先用phpMyAdmin导入数据库文件db/db.sql 如果导入不行&#xff0c;请直接复制数据库内容运行sql语句也可以 再修改config.php来进行数据库配置…

解决SpringBoot整合MyBatis和MyBatis-Plus,请求后不打印sql日志

问题发现 在整合springBootmyBatis时&#xff0c;发现请求不打印sql日志&#xff0c;示例代码如下&#xff1a; RestController public class MyController {AutowiredProductMapper productMapper;GetMapping("/test")public void test() {System.out.println(&qu…

使用Dockerfile配置Springboot应用服务发布Docker镜像-16

创建Docker镜像 springboot-docker模块 这个应用可以随便找一个即可&#xff0c;这里不做详细描述了。 pom.xml 依赖版本可参考 springbootSeries 模块中pom.xml文件中的版本定义 <dependencies><dependency><groupId>com.alibaba.cloud</groupId>…

[数据集][图像分类]杂草分类数据集17509张9类别

数据集格式&#xff1a;仅仅包含jpg图片&#xff0c;每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数)&#xff1a;17509 分类类别数&#xff1a;9 类别名称:["chineseapple","lantana","negatives","parkinsonia","part…

Nginx - location中的匹配规则和动态Proxy

文章目录 官网location 规则详解动态Proxy使用多个 if 指令指定不同的 proxy_pass根据参数选择不同的 proxy_pass 官网 https://nginx.org/en/docs/http/ngx_http_core_module.html#location location 规则详解 Nginx的location指令工作原理如下&#xff1a; 位置匹配&#…

虚拟机有线已连接但无法上网—·可能性之一

背景 VMware虚拟机&#xff0c;搭建了三台Linux服务器&#xff0c;组成Hadoop集群&#xff0c;由于在Hadoop102上有一些经常与Mysql数据库交互的任务&#xff0c;需要经常打开运行&#xff0c;而Hadoop103和104则经常处于关闭状态&#xff0c;一段时间后再次启动集群时候&…

【go项目01_学习记录11】

操作数据库 1 文章列表2 删除文章 1 文章列表 &#xff08;1&#xff09;先保证文章已经有多篇&#xff0c;可以直接在数据库中添加&#xff0c;或者访问链接: localhost:3000/articles/create&#xff0c;增加几篇文章。 &#xff08;2&#xff09;之前设置好了articles.ind…

C语言 | Leetcode C语言题解之第87题扰乱字符串

题目&#xff1a; 题解&#xff1a; struct HashTable {int key;int val;UT_hash_handle hh; };void modifyHashTable(struct HashTable** hashTable, int x, int inc) {struct HashTable* tmp;HASH_FIND_INT(*hashTable, &x, tmp);if (tmp NULL) {tmp malloc(sizeof(st…

树莓派对FPGA板子上的流水灯程序的控制

文章目录 一 树莓派使用教程二 树莓派串口代码三 Verilog代码四 quartus引脚绑定五 运行效果总结 分别在DE2-115开发板和树莓派上编写串口通信程序&#xff0c; 实现树莓派串口指令对FPGA板子上的流水灯程序的控制&#xff0c;控制方式自定。 一 树莓派使用教程 参考&#xff…

第187题| 快速学会“阿贝尔定理”| 无穷级数(十五)|武忠祥老师每日一题

解题思路&#xff1a;这道题没有告诉我们是多少&#xff0c;没办法求出收敛半径&#xff0c;所以我们只能根据题目给的两个条件来解题&#xff08;选项代入法&#xff09;。 1.x-1&#xff0c;说明收敛的中心点是1&#xff0c;观察下列选项&#xff0c;显然答案在C和D之中。 …

Linux中的网络隔离功能 netns

Network Namespace&#xff08;netns&#xff09; 是Linux内核提供的一项实现网络隔离的功能&#xff0c;它能隔离多个不同的网络空间&#xff0c;并且各自拥有独立的网络协议栈。通过 namespace 可以隔离容器的进程 PID、文件系统挂载点、主机名等多种资源&#xff0c;它可以为…

基于门控的循环神经网络:LSTM

之前我们介绍了循环神经网络的原理以及实现。但是循环神经网络有一个问题&#xff0c;也就是长期依赖问题。我们之前的01序列预测案例中可以看到&#xff0c;当序列长度到达10以上之后错误就会增多&#xff0c;说明简单的RNN记忆容量较小&#xff0c;当长度更大时就不怎么适用了…

可重构柔性装配产线:为工业制造领域注入了新的活力

随着科技的飞速发展&#xff0c;智能制造正逐渐成为引领工业革新的重要力量。在这一浪潮中&#xff0c;可重构柔性装配产线以其独特的技术优势和创新理念&#xff0c;为工业制造领域注入了新的活力&#xff0c;开启了创新驱动的智能制造新篇章。 可重构柔性装配产线是基于富唯智…

2024年一些值得关注的边缘计算招投标!中国移动、中国联通、中国铁塔大单来了!...

1.大单来了&#xff01;中国移动湖北公司算力设备采购(移动边缘云四期扩容)招标公告&#xff0c;3079万&#xff01; 项目名称&#xff1a;中国移动湖北公司算力设备采购(移动边缘云四期扩容)招标公告 本招标项目为(中国移动湖北公司算力设备采购(移动边缘云四期扩容)&#xff…

Cweek1

C语言学习 一.初识C语言 1.如何写C代码 ①创建工程 ②添加源文件&#xff1a;c文件&#xff1a;源文件&#xff0c;h文件&#xff1a;头文件 代码实例&#xff1a; main函数是程序的入口&#xff0c;有且仅有一个 在C语言中&#xff0c;#include <stdio.h> 是一个预…

Windows 11 下 kafka 的安装踩坑

安装 windows系统kafka小白入门篇——下载安装&#xff0c;环境配置&#xff0c;入门代码书写&#xff08;推荐&#xff09; kafka在windows下安装和使用入门教程 问题1 参考链接 运行kafka集成的zookeeper时&#xff0c;命令&#xff1a;bin\windows\zookeeper-server-star…

JavaEE初阶-多线程5

文章目录 一、线程池1.1 线程池相关概念1.2 线程池标准类1.3 线程池工厂类1.4 实现自己的线程池 二、定时器2.1 java标准库中的定时器使用2.2 实现一个自己的定时器2.2.1 定义任务类2.2.2 定义定时器 一、线程池 1.1 线程池相关概念 池这个概念在计算机中比较常见&#xff0c…

PXE+Kickstart无人值守安装安装Centos7.9

文章目录 一、什么是PXE1、简介2、工作模式3、工作流程 二、什么是Kickstart1、简介2、触发方式 三、无人值守安装系统工作流程四、实验部署1、环境准备2、服务端&#xff1a;关闭防火墙和selinux3、添加一张仅主机的网卡4、配置仅主机的网卡4.1、修改网络连接名4.2、配IP地址4…