当前位置: 首页 > news >正文

JavaScript加强篇——第四章 日期对象与DOM节点(基础)

目录

一、DOM节点基础

二、日期对象实例化

三、日期对象方法

四、时间戳与应用


本文摘要:文章系统介绍了Web开发中的DOM节点和JavaScript日期对象两大核心知识点。DOM部分讲解了四种节点类型(元素、属性、文本及其他)及其树形结构特性。日期对象部分详细说明:1)三种实例化方式;2)常用方法(需注意月份需+1);3)时间戳的三种获取方式及应用场景。特别强调实际开发中的注意事项,如月份计数规则、时间差计算的最佳实践,并提供了倒计时案例和面试常见问题解答。全文采用"节点四类型,日期三要点"口诀帮助记忆核心概念。

一、DOM节点基础

节点类型

节点类型说明示例
元素节点HTML标签<div><p>
属性节点标签属性hrefidclass
文本节点标签内的文本内容"Hello World"
其他节点注释/文档声明等<!-- comment -->

DOM树结构示例

⚠️ 关键特性

  1. 整个DOM文档是一个节点树

  2. html是根节点

  3. 元素节点可以包含子节点(文本/元素/属性节点)

  4. 属性节点不是元素节点的子节点,而是其属性


二、日期对象实例化

创建日期对象

// 1. 获取当前时间
const now = new Date();
console.log(now); // 输出: Sat Jun 01 2024 14:30:00 GMT+0800// 2. 获取指定时间
const olympics = new Date('2028-08-08');
console.log(olympics); // 输出: Tue Aug 08 2028 00:00:00 GMT+0800// 3. 使用年月日参数
const birthday = new Date(1995, 10, 20); // 月份从0开始计数!
console.log(birthday); // 输出: Mon Nov 20 1995 00:00:00

❗ 重要注意事项

月份参数从0开始计数:

  • 0 = 一月

  • 1 = 二月

  • ...

  • 11 = 十二月


三、日期对象方法

常用方法

方法返回值范围说明
getFullYear()四位数年份如 2024
getMonth()0-110=一月,11=十二月
getDate()1-31每月中的第几天
getDay()0-60=周日,1=周一,6=周六
getHours()0-2324小时制
getMinutes()0-59分钟数
getSeconds()0-59秒数

格式化日期示例

function formatDate(date) {const days = ['日', '一', '二', '三', '四', '五', '六'];return `${date.getFullYear()}年${date.getMonth() + 1}月${date.getDate()}日 星期${days[date.getDay()]}`;
}const today = new Date();
console.log(formatDate(today)); // 输出: 2024年6月1日 星期六

⚠️ 易错点提醒

const date = new Date();// 错误:忘记月份需要+1
console.log(`错误: ${date.getMonth()}月`); // 输出: 5月(实际是6月)// 正确:月份+1
console.log(`正确: ${date.getMonth() + 1}月`); // 输出: 6月

四、时间戳与应用

时间戳概念

1970年1月1日00:00:00 UTC起经过的毫秒数
用于精确计算时间间隔

三种获取方式

// 1. getTime()方法
const time1 = new Date().getTime();// 2. +new Date()(推荐)
const time2 = +new Date(); // 3. Date.now()(仅当前时间)
const time3 = Date.now();console.log(time1, time2, time3); // 输出三个相同的时间戳

倒计时应用

// 计算距离年底的倒计时
function countdown() {// 1. 获取当前时间戳const now = +new Date();// 2. 获取年底时间戳const end = +new Date('2024-12-31 23:59:59');// 3. 计算剩余毫秒数const remaining = end - now;// 4. 转换为天/时/分/秒const days = Math.floor(remaining / (1000 * 60 * 60 * 24));const hours = Math.floor(remaining % (1000 * 60 * 60 * 24) / (1000 * 60 * 60));const mins = Math.floor(remaining % (1000 * 60 * 60) / (1000 * 60));const secs = Math.floor(remaining % (1000 * 60) / 1000);return `${days}天 ${hours}时 ${mins}分 ${secs}秒`;
}// 每秒更新
setInterval(() => {console.log(countdown());
}, 1000);

⭐ 最佳实践

  1. 时间计算统一使用时间戳

  2. 优先使用+new Date()获取时间戳

  3. 倒计时结束时清除定时器:

if(remaining <= 0) {clearInterval(timer);console.log('倒计时结束!');
}

✅ 核心要点总结

📝 高频面试题速答

  1. Q:DOM中有哪些节点类型?

    A:元素节点、属性节点、文本节点、其他节点(注释等)

  2. Q:如何创建表示"2025年圣诞节"的日期对象?

    A:new Date(2025, 11, 25)(注意月份11表示十二月)

  3. Q:获取时间戳的三种方式?

    A:getTime()+new Date()Date.now()

  4. Q:为什么日期对象的getMonth()需要+1?

    A:因为月份从0开始计数(0=一月,11=十二月)

  5. Q:如何计算两个日期的时间差?

    A:转换为时间戳后相减:+new Date(end) - +new Date(start)


🧠 记忆口诀

"节点四类型,日期三要点"

  • 四类型:元素、属性、文本、其他

  • 三要点:实例化、方法、时间戳

http://www.dtcms.com/a/273932.html

相关文章:

  • 基于 HT 技术的智慧交通三维可视化技术架构与实践
  • 全球化 2.0 | 印尼金融科技公司通过云轴科技ZStack实现VMware替代
  • Spring的事务控制——学习历程
  • Kuberneres高级调度01
  • 如何使用Fail2Ban阻止SSH暴力破解
  • ICCV2025接收论文速览(1)
  • 导出word并且插入图片
  • 【C++ 深入解析 C++ 模板中的「依赖类型」】
  • 「Linux命令基础」Shell命令基础
  • PC网站和uniapp安卓APP、H5接入支付宝支付
  • 基于ASP.NET+SQL Server实现(Web)企业进销存管理系统
  • 《探索电脑麦克风声音采集多窗口实时可视化技术》
  • 【Springboot】Bean解释
  • Jenkins 自动触发执行的配置
  • Ntfs!NtfsCheckpointVolume函数中的Ntfs!LfsFlushLfcb函数对Lfcb->LogHeadBuffer进行了赋值--重要
  • 冒泡、选择、插入排序:三大基础排序算法深度解析(C语言实现)
  • 模型训练的常用方法及llama-factory支持的数据训练格式
  • [论文阅读] 人工智能 + 软件工程 | LLM辅助软件开发:需求如何转化为代码?
  • GPT和MBR分区
  • SLICEGPT: COMPRESS LARGE LANGUAGE MODELSBY DELETING ROWS AND COLUMNS
  • 匿名函数作递归函数引用
  • Immutable
  • MetaMask 连接其他网络,连接本地的 Anvil 区块链节点
  • 在Windows非Docker环境安装Redis的几种方法
  • pytest+yaml+allure接口自动化测试框架
  • 在 Postman 中高效生成随机环境变量的完整指南
  • 鸿蒙app 开发中的Record<string,string>的用法和含义
  • 深入探索Kafka Streams:企业级实时数据处理实践指南
  • 关闭 GitLab 升级提示的详细方法
  • AI产品经理面试宝典第8天:核心算法面试题-下