You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS调用getTime()方法报错:.getTime不是函数,基于HTML日期输入求解决

问题排查与解决方案

核心问题

你在日期输入框的change事件回调中,用var声明的lastMenDate和targetDate是局部变量,仅能在各自的回调函数内部访问。当点击calc按钮时,代码里的lastMenDate和targetDate是未定义的全局变量,并非你之前创建的Date实例,所以调用.getTime()会抛出"is not a function"错误。

修复方案

将lastMenDate和targetDate的声明提升到全局作用域,让所有事件回调都能共享这两个变量。同时建议增加日期有效性校验,避免未选择日期就触发计算的情况。

修改后的完整代码

// 全局声明变量,供所有回调函数共享
let lastMenDate;
let targetDate;

document.getElementById("lastMenDate").addEventListener("change", function () {
    const inputMen = this.value;
    lastMenDate = new Date(inputMen);
    console.log(lastMenDate);
});

document.getElementById("targetDate").addEventListener("change", function () {
    const inputTar = this.value;
    targetDate = new Date(inputTar);
    console.log(targetDate);
});

document.getElementById("calc").addEventListener("click", function () {
    // 校验日期是否有效
    if (!lastMenDate || !targetDate || isNaN(lastMenDate.getTime()) || isNaN(targetDate.getTime())) {
        console.log("请选择有效的日期");
        return;
    }
    
    const timeDifference = targetDate.getTime() - lastMenDate.getTime();
    const daysDifference = timeDifference / (1000 * 24 * 60 * 60);
    console.log(daysDifference);
});

额外说明

  • HTML原生日期输入框返回的是标准ISO格式字符串(YYYY-MM-DD),new Date()可以直接正确解析,无需额外处理格式。
  • 使用let替代var是更现代的变量声明方式,避免变量提升带来的潜在问题。

内容的提问来源于stack exchange,提问作者Jáchym Plánička

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 07:39:24