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

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.xdnf.cn/news/15294.html

相关文章:

  • P9755 [CSP-S 2023] 种树
  • 【JavaScript高级】构造函数、原型链与数据处理
  • OS16.【Linux】冯依诺曼体系结构和操作系统的浅层理解
  • docker-compose安装常用中间件
  • 【unitrix】 4.21 类型级二进制数基本结构体(types.rs)
  • 1965–2022年中国大陆高分辨率分部门用水数据集,包含:灌溉用水、工业制造用水、生活用水和火电冷却
  • C语言的程序控制语句
  • VR协作海外云:跨国企业沉浸式办公解决方案
  • 决策树算法在医学影像诊断中的广泛应用
  • ch07 题解
  • 番外-linux系统运行.net framework 4.0的项目
  • [特殊字符]远程服务器配置pytorch环境
  • 设计模式笔记_结构型_代理模式
  • 基于vscode开发工具显示git提交信息的插件
  • 世界现存燃油汽车品牌起源国别梳理
  • 【实时Linux实战系列】硬实时与软实时设计模式
  • 【网络】Linux 内核优化实战 - net.netfilter.nf_conntrack_max
  • 基于开源AI智能名片链动2+1模式与S2B2C商城小程序的渠道选择策略研究
  • BPE(Byte Pair Encoding)分词算法
  • flutter鸿蒙版 环境配置
  • 在前端项目中是如何解决跨域的
  • 解决Vue页面黑底红字遮罩层报错:Unknown promise rejection reason (webpack-internal)
  • CSP-J/S 参赛选手注册报名流程
  • 智能文本抽取在合同管理实战应用
  • AIC8800M40低功耗wifi在ARM-LINUX开发板上做OTA的调试经验
  • 借助 Wisdom SSH AI 助手,轻松安装 CentOS 8 LNMP 环境
  • 2025前端面试真题以及答案-不断整理中,问题来源于牛客真题
  • CMU15445-2024fall-project1踩坑经历
  • hive/spark sql中unix_timestamp 函数的坑以及时间戳相关的转换
  • 串行数据检测器,检测到011,Y输出1,否则为0.