js实现日期级联效果


在JavaScript中实现日期级联效果(通常指在选择年、月之后自动更新日的选择范围),可以通过监听年、月选择器的变化事件,并相应地更新日选择器的内容来实现。这里我提供一个简单的示例,假设我们使用HTML的``元素:


<select id="year">
    <!-- 年份填充代码略 -->
</select>
<select id="month">
    <!-- 月份填充代码略 -->
</select>
<select id="day">
    <!-- 日期填充代码会根据年和月动态生成 -->
</select>

接下来是JavaScript部分,用于填充年份、月份,并根据选择的年份和月份来更新日期的选项:


// 假设年份从2000到当前年份
const currentYear = new Date().getFullYear();
const years = Array.from({ length: currentYear - 2000 + 1 }, (_, i) => 2000 + i).map(year => `<option value="${year}">${year}</option>`).join('');
document.getElementById('year').innerHTML = years;

// 月份填充
const months = Array.from({ length: 12 }, (_, i) => `<option value="${i + 1}">${i + 1}</option>`).join('');
document.getElementById('month').innerHTML = months;

// 更新日的选择器
function updateDays() {
    const year = parseInt(document.getElementById('year').value, 10);
    const month = parseInt(document.getElementById('month').value, 10) - 1; // 月份从0开始
    const daysInMonth = new Date(year, month + 1, 0).getDate(); // 获取该月的天数
    
    const days = Array.from({ length: daysInMonth }, (_, i) => `<option value="${i + 1}">${i + 1}</option>`).join('');
    document.getElementById('day').innerHTML = days;
}

// 监听年份和月份的变化
document.getElementById('year').addEventListener('change', updateDays);
document.getElementById('month').addEventListener('change', updateDays);

// 初始加载时设置日期
updateDays();

这段代码首先填充了年份和月份的选择器,然后定义了一个`updateDays`函数,用于根据当前选择的年份和月份动态生成日期的选项,并更新到日选择器中。同时,它也为年份和月份的选择器添加了`change`事件监听器,以便在用户更改选择时自动更新日期的选项。最后,通过调用`updateDays`函数来初始化日选择器的选项。