js日历,利用Json传递数据,并附上日期显示

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 <%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<link rel="stylesheet" rev="stylesheet" href="../css/member.css" type="text/css" />
<style type="text/css">
*{margin:0;padding:0;font-size:12px;}
#div1{margin:20px;display:none;}
#div2{margin:20px;position:absolute; top:320px;}
#nowTime{width:285px;float:left;}
#nextTime{width:285px;float:left;margin:0 0 0 10px;}
.mytitle{width:100%;height:30px;background:#17a4eb;color:#FFFFFF;position:relative;}
.mytitle .c{text-align:center;line-height:30px;}
.mytitle .l{position:absolute;top:6px;left:5px;}
.mytitle .r{position:absolute;top:6px;right:5px;}
table.tcss{width:100%; background:#dee3e9;color:#9ea7ac;}
table.tcss tr{background:#f9fafc;}
table.tcss th{width:46px;padding:5px; font-size:11px;}
table.tcss td{padding:5px;text-align:center;}
.red{color:#ff0000;}
.myblue{color:#0000ff;
    background-color:#39F;
    }
.green{
    background-color:#6F0;
}
table .tcss td p{color:#FF0000;}

input{margin:20px;}

a{TEXT-DECORATION:none}
</style>
<script type="text/javascript" src="<%=basePath %>script/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="<%=basePath %>script/jquery.corner.js"></script>
<script type="text/javascript">
$(function(){           
    var aInput = document.getElementsByTagName('input');
    var oDiv = document.getElementById('div1');
    var oNowTime = document.getElementById('nowTime');
    var oNextTime = document.getElementById('nextTime');   
   
    var aTd = document.getElementsByTagName('td');
   
//    alert(oTd.length);
    var aNowSpan = oNowTime.getElementsByTagName('span');
    var aNextSpan = oNextTime.getElementsByTagName('span');
   
//    var bBtn = true;
//    aInput[2].οnclick=function(){
        var oDate = new Date();
//         if(bBtn){
            oDiv.style.display='block';
            if(oDate.getMonth()+1==12){
                showDate(oNowTime,oDate.getFullYear(),oDate.getMonth()+1,true);
                showDate(oNextTime,oDate.getFullYear()+1,1);
            }else{
                showDate(oNowTime,oDate.getFullYear(),oDate.getMonth()+1,true);
                showDate(oNextTime,oDate.getFullYear(),oDate.getMonth()+2);
            }
    //        alert(oDate.getDate());
            showColor(oDate.getDate());
            showBtn();
            hideLastTr();
            getJson('nowTime');
            getJson('nextTime');
/*        }else{
            oDiv.style.display='none';
        }
*/       
//        bBtn = !bBtn;
//    };
   
    function showDate(obj,year,month,bBtn){
        var oDate = new Date();
        var dayNum = 0;
       
        //没有Date则创建
        if(!obj.bBtn){
            obj.oTitle = document.createElement('div');
            obj.oTitle.className='mytitle';
            obj.appendChild(obj.oTitle);
           
            var oTable = document.createElement('table');
            $(oTable).addClass('tcss');
            var oThead = document.createElement('thead');
            var oTr = document.createElement('tr');
            var arr =['周一','周二','周三','周四','周五','周六','周日'];
            for(var i =0;i<7;i++){
                var oTh = document.createElement('th');   
                oTh.innerHTML = arr[i];
                if(i==5 || i==6){
                    oTh.className='red';   
                }
                oTr.appendChild(oTh);
            }
            oThead.appendChild(oTr);
            oTable.appendChild(oThead);
           
           
            var oTbody = document.createElement('tBody');
            for(var i = 0;i<6;i++){
                var oTr = document.createElement('tr');
                for(var j =0;j<7;j++){
                    var oTd = document.createElement('td');
                    oTr.appendChild(oTd);
                }
                oTbody.appendChild(oTr);
            }
            oTable.appendChild(oTbody);
            obj.appendChild(oTable);
            obj.bBtn = true;
        }
         
        obj.oTitle.innerHTML=(bBtn ? '<div class="l"><a href="javascript:void(0)"><<<span>'+(month-1)+'</span>月</a></div>'
                :'<div class="r"><a href="javascript:void(0)"><span>'+(month+1)+'</span>月>></a></div>')
                    +'<div class="c"><span>'+year+'</span>年<span>'+month+'</span>月 </div>';
       
        var aTd = obj.getElementsByTagName('td');
        //每次刷新先清空
        for(var i = 0;i<aTd.length;i++){
                aTd[i].innerHTML='';
               
        }
        //清楚所有样式
        /*
        for(var k =0;k<$('#nowTime td').size();k++){
         var bool = $('#nowTime td:eq('+k+')').hasClass('blue');
            if(bool){
                $('#nowTime td:eq('+k+')').uncorner();
            }
        }
        for(var k =0;k<$('#nextTime td').size();k++){
         var bool = $('#nextTime td:eq('+k+')').hasClass('blue');
            if(bool){
                $('#nextTime td:eq('+k+')').uncorner();
            }
        }
        */
        for(var k = 0;k<$('td').size();k++){
            $('td:eq('+k+')').uncorner();
            $('td:eq('+k+')').removeAttr('class');
        }
        if(month==1 || month==3 || month==5 || month==7 || month==8
           || month == 10 || month==12){
            dayNum = 31;   
        }
        else if(month==4 || month==6 || month==9 || month==11){
            dayNum=30;
        }else if(month==2 && isLeapYear(year)){
            dayNum = 29;   
        }else{
            dayNum = 28;   
        }
        oDate.setFullYear(year);
        oDate.setMonth(month-1);
        oDate.setDate(1);
       
        switch(oDate.getDay()){
            case 0:
                for(var i =0;i<dayNum;i++){
                    aTd[i+6].innerHTML = i+1;
                }
            break;
            case 1:
                for(var i =0;i<dayNum;i++){
                    aTd[i+1].innerHTML = i+1;
                }
            break;
            case 2:
                for(var i =0;i<dayNum;i++){
                    aTd[i+2].innerHTML = i+1;
                }
            break;
            case 3:
                for(var i =0;i<dayNum;i++){
                    aTd[i+3].innerHTML = i+1;
                }
            break;
            case 4:
                for(var i =0;i<dayNum;i++){
                    aTd[i+4].innerHTML = i+1;
                }
            break;
            case 5:
                for(var i =0;i<dayNum;i++){
                    aTd[i+5].innerHTML = i+1;
                }
            break;
            case 6:
                for(var i =0;i<dayNum;i++){
                    aTd[i+6].innerHTML = i+1;
                }
            break;
        }
        /*
        ajax('data.js?'+(+new Date),function(str){
            var j = eval('('+str+')');
            var now= 0;
            for(var i = 0;i<aTd.length;i++){
                if(aTd[i].innerHTML ==1){
                    now = i;   
                }
            }
           
            if(j.code){
                for(var i =0;i<j.list.length;i++){
                        if(j.list[i]){
                            var oP = document.createElement('p');
                            oP.innerHTML = j.list[i];
                            aTd[i+now].appendChild(oP);
                        }
                }
            }
        });
        */
        if(month==1 && bBtn ){
            obj.oTitle.getElementsByTagName('span')[0].innerHTML = 12;
        }else if(month==12 && !bBtn){
            obj.oTitle.getElementsByTagName('span')[0].innerHTML = 1;
        }
    }
    function  isLeapYear(year){
        if(year%4==0 && year%100!=0){
            return true;
        }else{
            if(year %400==0){
                return true;   
            }else{
                return false;
            }
        }   
    }
   
    function showColor(date){
            var result=[];
            var oDate = new Date();
    //        var re = new RegExp("'+date+'(<p>)*");
            var bBtn = true;
            var index = 0;
//            alert(oTd.length);
            for(var i = 0;i<aTd.length;i++){
                if(aTd[i].innerHTML !='')
                {
                    result.push(aTd[i]);   
                }
            }
            if(aNowSpan[1].innerHTML==oDate.getFullYear() &&
                        aNowSpan[2].innerHTML==oDate.getMonth()+1){
                for(var i = 0;i<result.length;i++){
    //                if(re.test(result[i].innerHTML)){
                    if(date==result[i].innerHTML && bBtn == true){
    //                    alert(result[i].innerHTML);
                    //    区别于其它签到日期,当前签到日期设置为green
                        result[i].className ='green';
                    //    $(result[i]).corner();   
                        index = i;   
                        bBtn = false;
                    }
                }
                //设置当前日期后10位蓝色字体显示
                /*
                for(len = index+10;index<len;index++){
                    result[index+1].className='blue';
                   
                }
                */
            }
           if(aNextSpan[1].innerHTML==oDate.getFullYear() &&
                        aNextSpan[2].innerHTML==oDate.getMonth()+1){
    //            for(var i = 0;i<result.length;i++){
                for(var i = result.length-1;i>=0;i--){
    //                if(re.test(result[i].innerHTML)){
                    if(date==result[i].innerHTML && bBtn == true){
    //                    alert(result[i].innerHTML);
                       
                        result[i].className ='green';   
                        index = i;
                    //只显示一次   
                        bBtn = false;
                    }
                }
                //设置当前日期后10位蓝色字体显示
                /*
                for(len = index+10;index<len;index++){
                    result[index+1].className='blue';
                   
                }
                */
            }
    }
    function showBtn(){
            var leftMonth = parseInt(aNowSpan[0].innerHTML);
            var leftYear = parseInt(aNowSpan[1].innerHTML);
            var rightMonth = parseInt(aNextSpan[0].innerHTML);
            var rightYear = parseInt(aNextSpan[1].innerHTML);
            aNowSpan[0].parentNode.onclick = function(){
                if(leftMonth == 12){
                    showDate(oNowTime,leftYear-1,leftMonth,true);
                    showDate(oNextTime,leftYear,1);
                }else{
                    showDate(oNowTime,leftYear,leftMonth,true);
                    showDate(oNextTime,leftYear,leftMonth+1);
                }
            //  设置按钮事件
                showBtn();
                showColor(new Date().getDate());
                hideLastTr();
                getJson('nowTime');
                getJson('nextTime');
            };
            aNextSpan[0].parentNode.onclick = function(){
                if(rightMonth == 1 ){
                    showDate(oNowTime,rightYear,12,true);
                    showDate(oNextTime,rightYear+1,rightMonth);
                }else{
                    showDate(oNowTime,rightYear,rightMonth-1,true);
                    showDate(oNextTime,rightYear,rightMonth);
                }
                showBtn();
                showColor(new Date().getDate());   
                hideLastTr();
                getJson('nowTime');
                getJson('nextTime');
            };
    }
           
    function hideLastTr(){
        var bBtn = true;
        var bBtn2 = true;
        for(var i = 35;i<42;i++){
            if( $('#div1 td:eq('+i+')').html() != ''){
                bBtn = false;   
            }
        }
        if(bBtn){
            for(var i = 35;i<42;i++){
                $('#div1 td:eq('+i+')').hide();
            }
        }
        else{
            for(var i = 35;i<42;i++){
                $('#div1 td:eq('+i+')').show();
            }
        }
       
        for(var i = 77;i<84;i++){
            if($('#div1 td:eq('+i+')').html() != ''){
                bBtn2 = false;   
            }
        }
        if(bBtn2){
            for(var i = 77;i<84;i++){
                $('#div1 td:eq('+i+')').hide();
            }
        }
        else{
            for(var i = 77;i<84;i++){
                $('#div1 td:eq('+i+')').show()    ;
            }
        }
    }
    function setDigital( num, n){
        var str = '' + num;
        while(str.length<n){
            str='0'+str;   
        }
        return str;
    }
   
    function getJson(position){
        $.getJSON("<%=basePath%>member/listMemberAttendance.htm",function(result){
            var records = result;
            for(var i=0;i<records.length;i++){
            //    alert(records[i]);
                var date = records[i];
                var yue = $('#'+position+' .c span:eq(1)').html();
                var month = setDigital(yue,2);
                var arr = date.split("-");
                var monthArr = arr[1];
                var dayArr = arr[2];
                if(month==monthArr){
                    var $td = $('#'+position+' td');
                    for(var k = 0;k<$td.size();k++){
                        var str = $td[k].innerHTML;
                        if(str==dayArr){
                    //        var $before = $('<a href="#">');
                    //        var $after = $('</a>');
                            $('#'+position+' td:eq('+k+')').addClass('myblue');
                            $('#'+position+' td:eq('+k+')').corner();
                        }
                    }
                }
            }
           
        });
    }           
});
</script>
</head>

<body >
<!--  <input type="text"/><input type="text"/><input type="button" value="确定"/>-->
<table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td align="center" valign="middle">
        <div class="content">
            <div class="welcome">尊敬的${member.name }先生,下午好,欢迎来到XXX!<a class="blue" href="<%=basePath%>logOut.htm"><b>注销</b></a>  &nbsp;
                <a class="blue" href="<%=basePath%>member/saveMemberAttendance.htm"><b>我要签到</b></a>  &nbsp;   
                <a class="blue" href="<%=basePath%>index.htm"><b>返回首页</b></a>  </div>
            <div class="main">
                   
                <%@include file="left.jsp" %>
               
                <div class="right">
                    <div id="div1">
                        <div id = "nowTime"></div>
                        <div id = "nextTime"></div>
                    </div>
                    <div id="div2">
                       <p class="red">说明:<img src="/images/member/blueq.jpg" width="5%" height="5%"></img>已签到 &nbsp;&nbsp;
                           <img src="/images/member/greenq.jpg" width="5%" height="5%"></img>当日签到        &nbsp;&nbsp;
                           <img src="/images/member/greennq.jpg" width="5%" height="5%"></img>当前日期      &nbsp;&nbsp;
                       </p>
                </div>
                </div>
               
            </div>
        </div>
   </td>
 </tr>
</table>   
               

</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在`TableCalendar`日历中的日期下方设置事件标记点并显示,您可以使用`markersBuilder`属性和自定义的标记小部件。以下是一种实现方式: 1. 首先,确保您已经安装了`table_calendar`库。在`pubspec.yaml`文件中添加以下依赖项: ```yaml dependencies: table_calendar: ^2.3.3 ``` 然后运行`flutter pub get`来获取最新的依赖项。 2. 导入所需的库: ```dart import 'package:flutter/material.dart'; import 'package:table_calendar/table_calendar.dart'; ``` 3. 创建一个`TableCalendar`小部件并设置相关属性,包括`markersBuilder`属性: ```dart TableCalendar( // 设置日历的起始和结束日期 firstDay: DateTime.utc(2022, 1, 1), lastDay: DateTime.utc(2022, 12, 31), // 设置事件标记的日期列表 eventLoader: (day) { // 返回包含事件的日期列表 // 如果某一天有事件,则返回该日期,否则返回null List<String> events = getEventsForDay(day); return events.isNotEmpty ? events : null; }, // 自定义事件标记的样式和显示逻辑 markersBuilder: (context, day, events, holidays) { final children = <Widget>[]; if (events.isNotEmpty) { children.add( Positioned( right: 1, bottom: 1, child: _buildEventsMarker(events), ), ); } if (holidays.isNotEmpty) { children.add( Positioned( right: -2, top: -2, child: _buildHolidaysMarker(), ), ); } return children; }, ) ``` 在上述代码中,我们使用`markersBuilder`属性自定义了事件标记的样式和显示逻辑。根据`events`参数中的事件列表,我们创建了一个`_buildEventsMarker`小部件来显示事件标记点,并将其放置在日期的右下角。您还可以根据需要添加其他标记,如`holidays`。 4. 创建用于显示事件标记点的小部件`_buildEventsMarker`: ```dart Widget _buildEventsMarker(List<String> events) { return Container( padding: EdgeInsets.all(2), decoration: BoxDecoration( color: Colors.blue, shape: BoxShape.circle, ), child: Text( events.length.toString(), style: TextStyle( color: Colors.white, fontSize: 12, fontWeight: FontWeight.bold, ), ), ); } ``` 在上述代码中,我们创建了一个圆形容器,并在其中显示事件的数量。 通过以上步骤,您可以在`TableCalendar`日历中的日期下方设置事件标记点并显示。请根据您的需求自定义事件标记的样式和显示逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值