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

如何在onChange事件中获取date类型input的日期值?

如何在日期选择器的onChange事件中正确获取日期值

问题原因

  • 第一次代码里,document.getElementById('sDate')拿到的是整个输入框DOM元素,不是选中的日期值,所以拼接后会显示[object HTMLInputElement],必须访问元素的value属性才能拿到日期。
  • 第二次代码里,const val = document.getElementById('sDate')执行时,DOM还没渲染出这个输入框,所以val是null。

正确写法

1. 用onChange事件参数直接取值(最方便)

onChange触发时会自动传入事件对象,通过e.target.value就能直接拿到选中的日期,不用手动查找DOM:

<input
    type='date'
    id='sDate'
    onChange={functionSDateChange}
/>

// 函数定义
const functionSDateChange = (e) => {
    console.log('Start date changed to ' + e.target.value);
};

2. 原生JS场景:等DOM加载完再获取元素

如果是纯原生JS,要把获取元素的代码放在DOM加载完成之后,或者放在输入框标签后面:

<input
    type='date'
    id='sDate'
/>

<script>
// 等待DOM全部加载完成
document.addEventListener('DOMContentLoaded', function() {
    const dateInput = document.getElementById('sDate');
    dateInput.addEventListener('change', function() {
        console.log('Start date changed to ' + dateInput.value);
    });
});
</script>

3. React项目用useRef获取元素(可选)

如果是React项目,也可以用useRef绑定输入框,避免每次查找DOM:

import { useRef } from 'react';

function DatePicker() {
    const dateRef = useRef(null);

    const functionSDateChange = () => {
        console.log('Start date changed to ' + dateRef.current.value);
    };

    return (
        <input
            type='date'
            ref={dateRef}
            onChange={functionSDateChange}
        />
    );
}

内容的提问来源于stack exchange,提问作者B A N G A T A

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:27:19