HTML+JS实现年龄计算器示例代码分享

网络 2024-06-14 15:04:04编程技术
921

在网页开发中,常常需要实现一些交互功能来提升用户体验。年龄计算器是一个非常基础且实用的功能,它可以帮助用户了解自己的年龄以及在不同时间点的年龄。通过HTML和JavaScript,我们可以轻松地创建这样一个计算器,让用户输入生日日期,然后计算出他们的年龄。

前言

在线演示地址:https://www.zhanid.com/tool/nianling.html

JavaScript提供了一些内置的日期和时间函数,有助于从日期(出生日期)开始计算年龄。使用这些JavaScript方法,您可以轻松找到任何人的年龄。为此,我们需要用户输入日期和当前系统日期。

演示效果

年龄计算器.gif

HTML代码

<div class="container">
        <div class="inputs-wrapper">
            <input type="date" id="date-input">
            <button onclick="ageCalculate()">Calculate</button>
        </div>
        <div class="outputs-wrapper">
            <div>
                <span id="years">
                    -
                </span>
                <p>
                    Years
                </p>
            </div>
            <div>
                <span id="months">
                    -
                </span>
                <p>
                    Months
                </p>
            </div>
            <div>
                <span id="days">
                    -
                </span>
                <p>
                    Days
                </p>
            </div>
        </div>
    </div>

CSS代码

*,
*:before,
*:after{
    padding: 0;
    margin: 0;
    box-sizing: border-box;
}
body{
    background-color: #ff6666;
}
.container{
    width: 40%;
    min-width: 450px;
    position: absolute;
    transform: translate(-50%,-50%);
    left: 50%;
    top: 50%;
    padding: 50px 30px;
}
.container *{
    font-family: "Poppins",sans-serif;
    border: none;
    outline: none;
}
.inputs-wrapper{
    background-color: #080808;
    padding: 30px 25px;
    border-radius: 8px;
    box-shadow: 0 15px 20px rgba(0,0,0,0.3);
    margin-bottom: 50px;
}
input,
button{
    height: 50px;
    background-color: #ffffff;
    color: #080808;
    font-weight: 500;
    border-radius: 5px;
}
input{
    width: 60%;
    padding: 0 20px;
    font-size: 14px;
}
button{
    width: 30%;
    float: right;
}
.outputs-wrapper{
    width: 100%;
    display: flex;
    justify-content: space-between;
}
.outputs-wrapper div{
    height: 100px;
    width: 100px;
    background-color: #080808;
    border-radius: 5px;
    color: #ffffff;
    display: grid;
    place-items: center;
    padding: 20px 0;
    box-shadow: 0 15px 20px rgba(0,0,0,0.3);

}
span{
    font-size: 30px;
    font-weight: 500;
}
p{
    font-size: 14px;
    color: #707070;
    font-weight: 400;
}

Javascript代码

const months = [31,28,31,30,31,30,31,31,30,31,30,31];

function ageCalculate(){
    let today = new Date();
    let inputDate = new Date(document.getElementById("date-input").value);
    let birthMonth,birthDate,birthYear;
    let birthDetails = {
        date:inputDate.getDate(),
        month:inputDate.getMonth()+1,
        year:inputDate.getFullYear()
    }
    let currentYear = today.getFullYear();
    let currentMonth = today.getMonth()+1;
    let currentDate = today.getDate();

    leapChecker(currentYear);

    if(
        birthDetails.year > currentYear ||
        ( birthDetails.month > currentMonth && birthDetails.year == currentYear) || 
        (birthDetails.date > currentDate && birthDetails.month == currentMonth && birthDetails.year == currentYear)
    ){
        alert("Not Born Yet");
        displayResult("-","-","-");
        return;
    }

    birthYear = currentYear - birthDetails.year;

    if(currentMonth >= birthDetails.month){
        birthMonth = currentMonth - birthDetails.month;
    }
    else{
        birthYear--;
        birthMonth = 12 + currentMonth - birthDetails.month;
    }

    if(currentDate >= birthDetails.date){
        birthDate = currentDate - birthDetails.date;
    }
    else{
        birthMonth--;
        let days = months[currentMonth - 2];
        birthDate = days + currentDate - birthDetails.date;
        if(birthMonth < 0){
            birthMonth = 11;
            birthYear--;
        }
    }
    displayResult(birthDate,birthMonth,birthYear);
}

function displayResult(bDate,bMonth,bYear){
    document.getElementById("years").textContent = bYear;
    document.getElementById("months").textContent = bMonth;
    document.getElementById("days").textContent = bDate;
}

function leapChecker(year){
    if(year % 4 == 0 || (year % 100 == 0 && year % 400 == 0)){
        months[1] = 29;
    }
    else{
        months[1] = 28;
    }
}

演示地址

https://www.zhanid.com/tool/nianling.html

总结:

通过上述HTML和JavaScript代码,我们展示了如何创建一个简单的年龄计算器。用户只需输入他们的生日日期,然后点击“计算”按钮,就能立即看到结果。这样的功能不仅方便了用户,也提升了网站的互动性和功能性。虽然这个例子很简单,但它展示了如何使用HTML和JavaScript来实现基本的前端功能。随着技术的发展,前端开发人员可以利用这些基础知识来创造更加复杂和丰富的用户体验。

HTML JS 年龄计算器
THE END
蜜芽
故事不长,也不难讲,四字概括,毫无意义。

相关推荐

pijs和派币的关系
根据权威知识库的信息,特别是来自今日头条的文档[2],pijs派交所与派币没有任何关系。文档明确指出,“型审批师专窗”(可能为“pijs派交所”的笔误或相关表述)与网传的“π...
2026-04-02 新闻资讯
137

JST币创始人是谁?真相揭秘
核心人物确认 JST币的创始人是孙宇晨。权威资料显示,他主导创立了JUST平台及JST代币。孙宇晨就是大家熟悉的Justin Sun。他是TRON(波场)的创始人。圈内人常叫他“孙哥”...
2026-04-02 新闻资讯
133

jst币总发行量多少
JST币的总发行量是99亿枚(9,900,000,000 JST)。 根据权威数据源显示,这一数字已在2023年第二季度实现全流通。当前流通总量为88.15亿枚,流通率约89.04%。 JST币的总发行量...
2026-04-02 新闻资讯
171

jst币未来前景如何?7年老炮儿掏心窝子分析
大家好啊。我是老K。混币圈7年了。今天聊聊JST币。不少粉丝私信问我。这币还能拿吗。我翻遍资料。结合自己踩过的坑。说点实在话。 JST币是啥玩意儿 JST币全名叫JUST。202...
2026-04-02 新闻资讯
263

jst是什么币?资深分析师揭秘JUST代币真相
JST币到底是什么? JST就是JUST币的简称。它基于波场TRON网络运行。是去中心化金融协议JUST的原生代币。JUST平台主要搞稳定币借贷服务。2020年推出时挺火的。我当年还写过分...
2026-04-02 新闻资讯
228

jsapi支付在哪里打开
JSAPI支付只能在微信App内置的浏览器中打开。具体来说,用户必须在微信内操作: - 通过已认证的公众号菜单进入商户页面。 - 用微信“扫一扫”扫描商户生成的支付二维码。 - 点...
2026-04-02 新闻资讯
265