• angularJS写的简易日历,有待简化


    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <title>我的日历</title>
    <style>
    .inline_block{
    display: inline-block;
    }
    .width30{
    30px;
    }
    .h30{
    height: 30px;
    line-height: 30px;
    }
    .width150{
    150px;
    }
    .width210{
    210px;
    }
    .fl{
    float: left;
    }
    .fr{
    float: right;
    }
    .over{
    overflow: hidden;
    }
    .fontSize14{
    font-size: 14px;
    }
    .fontSize16{
    font-size: 16px;
    }
    .fontSize18{
    font-size: 18px;
    }
    .textAlignCenter{
    text-align: center;
    }
    .marginLd20{
    margin: 0px 20px;
    }
    .marginTop20{
    margin-top: 20px;
    }
    .border{
    border: 1px solid #F0F0F0;
    }
    .padding20{
    padding: 20px;
    }
    </style>
    <script src="js/angularJS/angular.min.js"></script>
    </head>
    <body ng-app="calendary">
    <div class="width210 border padding20" ng-controller="calController">
    <div class="over">
    <button class="width30 fl fontSize18 h30" ng-click="next('p')"><</button>
    <span class="width150 fl inline_block h30 textAlignCenter fontSize14">{{month}}月 {{year}}</span>
    <button class="width30 fr fontSize18 h30" ng-click="next('n')">></button>
    </div>
    <div class="over fontSize16">
    <span class="width30 textAlignCenter h30 fl">日</span>
    <span class="width30 textAlignCenter h30 fl">一</span>
    <span class="width30 textAlignCenter h30 fl">二</span>
    <span class="width30 textAlignCenter h30 fl">三</span>
    <span class="width30 textAlignCenter h30 fl">四</span>
    <span class="width30 textAlignCenter h30 fl">五</span>
    <span class="width30 textAlignCenter h30 fr">六</span>
    </div>
    <div class="over fontSize14">
    <span class="width30 textAlignCenter h30 fl" ng-repeat="day in daysOfBefore">&ensp;</span>
    <span class="width30 textAlignCenter h30 fl" ng-repeat="day in haveDays" ng-click="getTheDay(day)">{{day}}</span>
    </div>
    <div class="textAlignCenter marginTop20">
    <button class="marginLd20">清空</button>
    <button class="marginLd20">关闭</button>
    </div>
    </div>

    <script>
    angular.module('calendary',[])
    .controller('calController',['$scope','cal',function($scope,cal){
    // 6*7日历
    var months=['一','二','三','四','五','六','七','八','九','十','十一','十二'];
    var weeks=['日','一','二','三','四','五','六'];
    // 年月日初始化
    var date=new Date();
    $scope.day=date.getDate();//当前为几号

    // 获取当前年
    $scope.year=date.getFullYear();
    cal.setYear($scope.year);


    // 判断第几个月份,当前为几月
    var monthOrder=date.getMonth();
    cal.setMonthOrder(monthOrder);
    $scope.month=months[monthOrder];

    // 获取某年的某月有几天
    var haveDaysOfOneMonth=cal.getDaysOfOneMonth($scope.year,monthOrder);
    $scope.haveDays=cal.createDaysFrom1(haveDaysOfOneMonth);


    // 获取当前周几,然后算出前面月份有几天,留空白
    var weekDayForFirstDayOfMonth=cal.getFirstDayOfMonth($scope.year,monthOrder);
    // 留白部分
    $scope.daysOfBefore=cal.createDaysOfBlank(weekDayForFirstDayOfMonth);

    $scope.next=function(direction){
    if(direction=='p'){
    cal.getPrevMonth();
    comm();
    console.log('上个月');
    }else if(direction=='n'){
    cal.getNextMonth();
    comm();
    console.log('下个月');
    }
    };
    function comm(){
    monthOrder=cal.getMonthOrder();
    $scope.month=months[monthOrder]
    $scope.year=cal.getYear();

    haveDaysOfOneMonth=cal.getDaysOfOneMonth($scope.year,monthOrder);
    $scope.haveDays=cal.createDaysFrom1(haveDaysOfOneMonth);

    weekDayForFirstDayOfMonth=cal.getFirstDayOfMonth($scope.year,monthOrder);
    $scope.daysOfBefore=cal.createDaysOfBlank(weekDayForFirstDayOfMonth);
    };

    $scope.getTheDay=function(theDay){
    $scope.selectDay=theDay;
    }

    }])
    .factory('cal',function(){
    var cals={};
    cals.days=['31','28','31','30','31','30','31','31','30','31','30','31'];

    var date=new Date();

    // 判断二月份有几天
    cals.getDaysOfFeb=function(y){
    if(y%4==0){
    if(y%400==0){
    // 整除400闰年
    cals.days[1]=29;
    }else if(y%100==0){
    // 整除100平年
    cals.days[1]=28;
    }else{
    cals.days[1]=29;
    }
    }else{
    cals.days[1]=28;
    }
    };

    // 设定年份
    cals.setYear=function(y){
    cals.yearNow=y;
    };
    cals.getYear=function(){
    return cals.yearNow;
    };


    // 得到某个月有多少天
    cals.getDaysOfOneMonth= function(y,m){
    // 先确定2月份有多少天
    cals.getDaysOfFeb(y);
    return cals.days[m];
    };
    // 创建数组1~d
    cals.createDaysFrom1=function(d){
    var days=[];
    for(var i=1;i<=d;i++){
    days.push(i);
    }
    return days;
    };
    cals.createDaysOfBlank=function(len){
    var days=[];
    for(var i=0;i<len;i++){
    days.push(i);
    };
    return days;
    };



    // 设定当前是第几个月
    cals.setMonthOrder=function(n){
    cals.thisMonth=n;
    };
    // 获得当前是第几个月
    cals.getMonthOrder=function(){
    return cals.thisMonth;
    };
    // 获取下一个月,是第几个月;>12增一年,月份序号清零,<0减一年,月份序号置满11
    cals.getNextMonth=function(){
    //
    cals.thisMonth+=1;
    if(cals.thisMonth>11){
    cals.thisMonth=0;
    cals.yearNow=parseInt(cals.yearNow)+1;
    }
    };
    cals.getPrevMonth=function(){
    cals.thisMonth-=1;
    if(cals.thisMonth<0){
    cals.thisMonth=11;
    cals.yearNow=parseInt(cals.yearNow)-1;
    }
    };

    // 判断当月第一天是周几
    cals.getFirstDayOfMonth=function(y,m){
    var dateForFirstDay=new Date(y,m,'1');
    return dateForFirstDay.getDay();
    };

    return cals;
    })
    </script>
    </body>
    </html>
  • 相关阅读:
    内联模板 C++快速入门46
    delphi演示程序
    delphi演示程序
    容器和算法 C++快速入门47
    Delphi7_Lite_Fullv7.3优化精简全功能版
    Delphi7_Lite_Fullv7.3优化精简全功能版
    容器和算法 C++快速入门47
    [转载 js]alt美化效果
    “谁动了我的奶酪?”的故事
    谁动了我的奶酪[续] 讨论
  • 原文地址:https://www.cnblogs.com/zshome/p/5210879.html
Copyright © 2020-2023  润新知