如何计算指定日期0点至指定时间的毫秒数?代码无输出问题排查
问题分析与修复
嘿,我帮你找出问题所在啦!你的代码之所以没有任何输出,是因为犯了一个容易忽略的小错误,导致整个脚本执行中断了:
核心错误:误用时间戳调用Date对象方法
你写了var countDownDate = new Date("January 10, 2018 00:01").getTime();,这里的getTime()会返回一个代表时间的毫秒数(纯数字类型),而不是Date对象。后续你试图调用countDownDate.getFullYear()的时候,数字是没有这个方法的,浏览器会抛出TypeError: countDownDate.getFullYear is not a function的错误,脚本直接在这里停住,自然不会执行到给div赋值的步骤。修复思路与代码
我们需要先保留countDownDate为Date对象,再基于它创建当天0点的时间实例,最后再取时间戳计算差值:
// 先保留原始的Date对象,不要立刻转成时间戳 var countDownDate = new Date("January 10, 2018 00:01"); // 基于目标日期创建当天0点的Date实例 var countDownStart = new Date(countDownDate.getFullYear(), countDownDate.getMonth(), countDownDate.getDate(), 0, 0, 0, 0); // 计算0点到指定时间的毫秒差 var countDownTime = countDownDate.getTime() - countDownStart.getTime(); // 获取DOM元素并赋值,同时增加元素存在性判断 var div = document.getElementById('result'); if (div) { div.innerText = countDownTime; } else { console.error("页面中找不到id为'result'的元素"); }
- 额外注意事项
还要确保你的HTML页面里确实存在一个id为result的元素,比如:
<div id="result"></div>
如果没有这个元素,document.getElementById('result')会返回null,给null赋值innerText也会报错,这也是页面无输出的常见原因之一。
内容的提问来源于stack exchange,提问作者jiggy1965
相关产品推荐
相关产品推荐

