1. 程式人生 > 其它 >【前端】html+js+css實現日曆,jquery+js實現監聽點選

【前端】html+js+css實現日曆,jquery+js實現監聽點選

技術標籤:前端

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Index</title>
    <script src="../../static/js/jquery.min.js"></script>
</head>
<style>
    *{
        padding: 0;
        margin
: 0; } .calendar{ width:253px; height:250px; background:#fff; box-shadow:0px 1px 1px rgba(0,0,0,0.1); padding: 12px; } .body-list ul{ width:100%; font-family:arial; font-weight:bold; font-size:14px; } .body-list ul li
{ width:26px; height:26px; margin: 5px; line-height:26px; list-style-type:none; display:block; box-sizing:border-box; float:left; text-align:center; cursor: pointer; transition: 0.3ms; border-radius: 50%; }
.body-list ul li:hover{ color: #6ac13c; border:1px solid #6ac13c; background:#e9f8df; /*淺綠色背景*/ } .lightgrey{ color:#a8a8a8; /*淺灰色*/ } .darkgrey{ color:#565656; /*深灰色*/ } .green{ color:#6ac13c!important; /*綠色*/ border:1px solid #6ac13c; background:#e9f8df; /*淺綠色背景*/ }
</style> <body> <!-- 資料,包含,選中的資料,和全部的資料,選中的資料如果沒有引數,則就是空物件 --> <div class="calendar"> <div class="title" style="font-size: 10px"> <!-- <h1 class="green" id="calendar-title">Month月</h1>--> <h2 class="green small" id="calendar-year-month">Year年</h2> <a href="" id="prev">Prev Month</a> <a href="" id="next">Next Month</a> </div> <div class="body"> <div class="lightgrey body-list"> <ul> <li>MON</li> <li>TUE</li> <li>WED</li> <li>THU</li> <li>FRI</li> <li>SAT</li> <li>SUN</li> </ul> </div> <div class="darkgrey body-list"> <ul id="days"> </ul> </div> </div> </div> <script type="text/javascript"> var month_olympic = [31,29,31,30,31,30,31,31,30,31,30,31]; var month_normal = [31,28,31,30,31,30,31,31,30,31,30,31]; var month_name = ["1","2","3","4","5","6","7","8","9","10","11","12"]; var holder = document.getElementById("days"); var prev = document.getElementById("prev"); var next = document.getElementById("next"); // var ctitle = document.getElementById("calendar-title"); var cyear = document.getElementById("calendar-year-month"); var my_date = new Date(); var my_year = my_date.getFullYear(); var my_month = my_date.getMonth(); var my_day = my_date.getDate(); //獲取某年某月第一天是星期幾 function dayStart(month, year) { var tmpDate = new Date(year, month, 1); return (tmpDate.getDay()); } //計算某年是不是閏年,通過求年份除以4的餘數即可 function daysMonth(month, year) { var tmp = year % 4; if (tmp === 0) { return (month_olympic[month]); } else { return (month_normal[month]); } } function refreshDate(){ var str = ""; var totalDay = daysMonth(my_month, my_year); //獲取該月總天數 var firstDay = dayStart(my_month, my_year); //獲取該月第一天是星期幾 var myclass; for(var i=1; i<firstDay; i++){ str += "<li></li>"; //為起始日之前的日期建立空白節點 } //根據下面方法得到的資料,如果是今天之後的資料,則顯示藍色表示可以修改。 //如果是以前完成過的資料,則顯示綠色的勾勾 for(var i=1; i<=totalDay; i++){ if((i<my_day && my_year==my_date.getFullYear() && my_month==my_date.getMonth()) || my_year<my_date.getFullYear() || ( my_year==my_date.getFullYear() && my_month<my_date.getMonth())){ myclass = " class='lightgrey'"; //當該日期在今天之前時,以淺灰色字型顯示 }else if (i==my_day && my_year==my_date.getFullYear() && my_month==my_date.getMonth()){ myclass = " class='green lightgrey'"; //當天日期以綠色背景突出顯示 }else{ myclass = " class='darkgrey'"; //當該日期在今天之後時,以深灰字型顯示 } str += "<li"+myclass+">"+i+"</li>"; //建立日期節點 } holder.innerHTML = str; //設定日期顯示 // ctitle.innerHTML = month_name[my_month]; //設定英文月份顯示 cyear.innerHTML = my_year+"年"+month_name[my_month]+"月"; //設定年份顯示 let itemli = $("#days>li"); console.log(itemli) //每個都可以點 for(var i = 0; i<itemli.length; i++){ itemli[i].index = i; //給每個li定義一個屬性索引值 itemli[i].onclick = function(){ console.log(this.index+" "+this.innerHTML); } } } refreshDate(); //執行該函式 //每次切換都得到這一個月的資料,上面,如果這個月完成過,則變為對勾,否則顯示日期 prev.onclick = function(e){ e.preventDefault(); my_month--; if(my_month<0){ my_year--; my_month = 11; } //得到資料 refreshDate(); } next.onclick = function(e){ e.preventDefault(); my_month++; if(my_month>11){ my_year++; my_month = 0; } //得到資料 refreshDate(); } // document.getElementsByTagName("li") </script> </body> </html>