大牛练成记:用JavaScript徒手写出一个日期选择插件

这篇具有很好参考价值的文章主要介绍了大牛练成记:用JavaScript徒手写出一个日期选择插件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大牛练成记:用JavaScript徒手写出一个日期选择插件,100个JavaScript的小应用,javascript,开发语言,ecmascript,日历插件

🏆作者简介,黑夜开发者,全栈领域新星创作者✌,阿里云社区专家博主,2023年6月csdn上海赛道top4。
🏆本文已收录于专栏:100个JavaScript的小应用。
🎉欢迎 👍点赞✍评论⭐收藏


🚀一、写作思路介绍

在现代Web应用程序中,日期选择器是一个非常常见的组件,用户可以使用它来选择特定的日期。在本篇文章中,我们将使用JavaScript和HTML来创建一个简单但功能强大的日期选择插件。这个日期选择插件是比较考验Js基本功的

该插件将具有以下功能:

  1. 点击输入框时,将显示日期选择器。
  2. 日期选择器上方有一个年份和月份选择器,可以向左或向右切换。
  3. 日期选择器下方是一个日期网格,用户可以通过点击来选择日期。
  4. 当用户选择一个日期后,插件将自动将选定的日期填充到输入框中。

🚀二、准备工作

🔎2.1 写一个入口页面

在开始之前,我们需要准备一些基本的 HTML 和 CSS 结构(date-picker.html)。

HTML 结构如下:

<!DOCTYPE html>
<html>
<head>
    <title>日期选择插件</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="container">
        <input type="text" id="date-input" placeholder="选择日期">
    </div>

    <script src="script.js"></script>
</body>
</html>

🔎2.2 设计基本的插件样式

CSS 样式如下(style.css):

.container {
    background-color: #FDF5E6;
    padding: 10px;
    width: 200px;
    border-radius: 5px;
}

#date-input {
    width: 100%;
    height: 30px;
    padding: 5px;
    font-size: 16px;
    border: none;
}

大概出来的效果图如下:
大牛练成记:用JavaScript徒手写出一个日期选择插件,100个JavaScript的小应用,javascript,开发语言,ecmascript,日历插件

🔎2.3 实现日期选择插件

首先,我们需要监听输入框的点击事件,当用户点击输入框时,展示日期选择插件。

在 JavaScript 文件中添加以下代码:

document.getElementById("date-input").addEventListener("click", function() {
    showDatePicker();
});

function showDatePicker() {
    // 创建日期选择插件的容器
    var datePickerContainer = document.createElement("div");
    datePickerContainer.className = "date-picker";

    // 获取当前日期
    var currentDate = new Date();

    // 获取当前年份和月份
    var currentYear = currentDate.getFullYear();
    var currentMonth = currentDate.getMonth();

    // 创建日历表格
    var calendarTable = createCalendarTable(currentYear, currentMonth);

    // 将日历表格添加到日期选择插件的容器中
    datePickerContainer.appendChild(calendarTable);

    // 将日期选择插件的容器添加到文档中
    document.body.appendChild(datePickerContainer);
}

function createCalendarTable(year, month) {
    // 创建日历表格
    var table = document.createElement("table");

    // 创建表头
    var thead = document.createElement("thead");
    var tr = document.createElement("tr");
    var daysOfWeek = ["日", "一", "二", "三", "四", "五", "六"];
    for (var i = 0; i < daysOfWeek.length; i++) {
        var th = document.createElement("th");
        th.textContent = daysOfWeek[i];
        tr.appendChild(th);
    }
    thead.appendChild(tr);
    table.appendChild(thead);

    // 创建表格主体
    var tbody = document.createElement("tbody");
    var startDate = new Date(year, month, 1); // 当月第一天
    var endDate = new Date(year, month + 1, 0); // 当月最后一天
    var currentDate = new Date(year, month, 1); // 当前日期,默认为当月第一天
    while (currentDate <= endDate) {
        tr = document.createElement("tr");
        for (i = 0; i < 7; i++) {
            var td = document.createElement("td");
            if (currentDate.getMonth() === month) {
                td.textContent = currentDate.getDate();
                td.addEventListener("click", selectDate);
                td.className = "date";
            } else {
                td.textContent = "";
                td.className = "disabled";
            }
            if (currentDate.toDateString() === new Date().toDateString()) {
                td.className += " current-day";
            }
            tr.appendChild(td);
            
            currentDate.setDate(currentDate.getDate() + 1);
        }
        tbody.appendChild(tr);
    }
    table.appendChild(tbody);

    return table;
}

function selectDate(event) {
    var selectedDate = new Date(year, month, event.target.textContent);
    var dateString = selectedDate.getFullYear() + "-" + (selectedDate.getMonth() + 1) + "-" + selectedDate.getDate();
    document.getElementById("date-input").value = dateString;

    // 移除日期选择插件的容器
    var datePickerContainer = document.querySelector(".date-picker");
    datePickerContainer.parentNode.removeChild(datePickerContainer);
}

在以上代码中,我们使用 showDatePicker 函数来创建日期选择插件的容器,并将其添加到文档中。

createCalendarTable 函数创建了一个日历表格,并根据给定的年份和月份生成了相应的日期。

selectDate 函数用于选择日期并将其写入输入框,然后移除日期选择插件的容器。

🔎2.4 美化日期选择插件

为了美化日期选择插件,我们使用了自定义的 CSS 样式。

首先,我们将整体边框背景搭配调的比较舒服一点,在style.css里面追加下面的内容:

.date-picker {
    position: absolute;
    background-color: #FFF;
    border: 1px solid #DDD;
    padding: 10px;
    z-index: 999;
}

.current-day {
    background-color: #CCC;
}

.date-picker td {
    text-align: center;
    width: 30px;
    height: 30px;
    cursor: pointer;
}

.date-picker td:hover {
    background-color: #EEE;
}

.date-picker td:not(.disabled):hover {
    background-color: #DDD;
}

.disabled {
    color: #AAA;
    cursor: not-allowed;
}

.container {
    background-color: #FDF5E6;
}

然后,我们使用灰色作为选中日期的背景色,并使用黑色作为日期字样的颜色:

.current-day {
    background-color: #CCC;
}

.date-picker td {
    color: #000;
}

其他常规样式的配置可以根据需要进行调整,比如边框样式、鼠标悬停效果等,我们来看一下最终大概的效果。
大牛练成记:用JavaScript徒手写出一个日期选择插件,100个JavaScript的小应用,javascript,开发语言,ecmascript,日历插件

🚀三、总结

在本文中,我们介绍了如何使用 JavaScript 和 HTML 来创建一个简单的日期选择插件,并对其进行了美化。通过监听输入框的点击事件,在用户点击输入框时展示日期选择插件,并通过点击日期来选择日期并将其写入输入框。最后,我们使用 CSS 样式来美化日期选择插件,使其更加美观。这个日期选择插件可以方便地应用于网页中,提供良好的用户体验。

以上就是关于如何使用 JavaScript 和 HTML 实现一个日期选择插件的介绍。不过关于这个插件还是可以继续丰富,比如支持选择年份和月份等,有想法的大佬可以持续补充。希望本文对你有所帮助!

完整代码在文章开头可以下载,有需要可以前往下载。

大牛练成记:用JavaScript徒手写出一个日期选择插件,100个JavaScript的小应用,javascript,开发语言,ecmascript,日历插件
后面将会分享更多的实战经验,我们下次见。文章来源地址https://www.toymoban.com/news/detail-622707.html

到了这里,关于大牛练成记:用JavaScript徒手写出一个日期选择插件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JavaScript日期对象

    1.实例化 2.时间对象方法 3.时间戳 背景: 日期对象 目标 :掌握日期对象,可以让网页显示日期 日期对象 :用来表示时间的对象 作用 :可以得到当前系统时间 目标:能够实例化日期对象 1.在代码中发现了new时,一般将这个操作称为实例化 2.创建一个时间对象并获取

    2024年02月06日
    浏览(31)
  • 用 JavaScript 比较两个日期

    有人可以建议一种方法来使用 JavaScript 比较两个日期的值大于、小于和不过去吗?这些值将来自文本框。 打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始! Date object 将做您想做的事 - 为每个日期构造一个,然后使用 、、= 或 = 比较它们。 、!=、 = 和 !== 运算符要求

    2024年02月05日
    浏览(39)
  • 10分钟带你徒手做个Java线程池

    摘要: 花10分钟开发一个极简版的Java线程池,让小伙伴们更好的理解线程池的核心原理。 本文分享自华为云社区《放大招了,冰河带你10分钟手撸Java线程池,yyds,赶快收藏吧》,作者:冰 河。 看过Java线程池源码的小伙伴都知道,在Java线程池中最核心的类就是ThreadPoolExec

    2023年04月19日
    浏览(32)
  • JavaScript时间戳转换为日期的方法

    JavaScript中的时间戳是一个表示自1970年1月1日零时起经过的毫秒数的数字。将时间戳转换为日期可以帮助我们在JavaScript中进行日期和时间的处理。本文将介绍如何使用JavaScript将时间戳转换为日期。 方法一:使用Date对象 JavaScript的内置对象Date提供了处理日期和时间的功能。我

    2024年02月04日
    浏览(46)
  • JavaScript 日期和时间的格式化大汇总(收集)

    一、日期和时间的格式化 1、原生方法 1.1、使用 toLocaleString 方法 Date 对象有一个 toLocaleString 方法,该方法可以根据本地时间和地区设置格式化日期时间。例如:   toLocaleString 方法接受两个参数,第一个参数是地区设置,第二个参数是选项,用于指定日期时间格式和时区信息

    2024年02月08日
    浏览(54)
  • JavaScript中日期转换为时间戳的实现方法

    日期和时间在编程中是非常常见的数据类型。在JavaScript中,我们经常需要将日期转换为时间戳,以便进行日期比较、排序或存储为数字格式。本文将介绍如何使用JavaScript将日期转换为时间戳,并提供相应的源代码示例。 JavaScript中的时间戳是自1970年1月1日午夜(UTC时间)以来

    2024年02月04日
    浏览(49)
  • 转换json格式的日期为Javascript对象的函数

    项目中碰到了用jQuery从后台获取的json格式的日期的字符串,需要将此字符串转换成JavaScript的日期对象。 代码如下: 开发中有时候需要从服务器端返回json格式的数据,在后台代码中如果有DateTime类型的数据使用系统自带的工具类序列化后将得到一个很长的数字表示日期数据,

    2023年04月25日
    浏览(39)
  • JavaScript Date对象 、日期求差案例 、 购物秒杀倒计时、日历

    一、创建Date对象 var dateObj=new Date(); var now = Date.now()   当前时间 二、Date方法 1、将日期转为字符串 2、获取年、月、日、小时、分、秒 getFullYear() getMonth()      获取月份,返回值为0-11(外国人规定的),表示1月到12月,所以获取到月份之后需要+1 getDate()        获取天,返

    2024年02月05日
    浏览(54)
  • datePicker一个或多个日期组件,如何快捷选择多个日期(时间段)

    elementUI的组件文档中没有详细说明type=\\\"dates\\\"如何快捷选择一个时间段的日期,我们可以通过picker-options参数来设置快捷选择: 通过设置变量pickerOption的值可设置快捷选择: 其中dateFormat方法是将日期格式化,getAllDate方法是获取开始和结束日期之间的全部日期,在data中定义:

    2024年02月13日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包