为了账号安全,请及时绑定邮箱和手机立即绑定

数据为undefined,,求大佬帮看下

请问一下为何我最终是undefined,获取不到数据,结果为Null

(function () {
    var datepicker = {};

    datepicker.getMonthData = function (year,month) {//获取一个月的数据,

        var ret = [];

        if (!year || !month){
            var today = new Date();
            year = today.getFullYear();//获取年份
            month = today.getMonth()+1;//获取月份
        }
        var firstDay = new Date(year,month-1,1);//获取当月的第一天

        var firstDayWeekDay = firstDay.getDay();//获取第一天是星期几

        if ( firstDayWeekDay===0){//判断是否是周日
            firstDayWeekDay = 7;
        }

        year = firstDay.getFullYear();
        month = firstDay.getMonth() + 1;

        var lastDayOfLastMonth = new Date(year,month-1,0);//获取上个月的最后一天

        var lastDateOfLastMonth = lastDayOfLastMonth.getDate();
        // console.log(lastDateOfLastMonth);

        var preMonthDayCount = firstDayWeekDay - 1;//

        var lastDay = new Date(year,month,0);//本月的最后一天
        var lastDate = lastDay.getDate();

        for(var i=0;i<7*6;i++){
            var date = i + 1 - preMonthDayCount;
            var showDate = date;
            var thisMonth = month;


            if (date<=0){  //上一月
                thisMonth = month - 1;
                showDate = lastDateOfLastMonth + date;
            }else if(date > lastDate){//下一月
                thisMonth = month + 1;
                showDate = showDate - lastDate;
            }

            if(thisMonth === 0) thisMonth = 12;
            if(thisMonth ===13) thisMonth = 1;

            ret.push({
                month:thisMonth,//月份
                date:date,  //真实日期
                showDate:showDate//显示的日期
            });
        }
        return{
            year:year,
            month:month,
            days:ret
        }
    };


    window.datepicker = datepicker;//用window定义的变量是全局的变量
})();

main.js

(function () {

    var datepicker = window.datepicker;

    datepicker.buildUi = function (year ,month) {   //buildUi 为渲染函数
        var monthData = datepicker.getMonthData(year,month);

        var html = '<div class="ui-datepicker-header">'+
            '<a href="#" class="ui-datepicker-btn ui-datepicker-prev-btn">&lt;</a>'+
            '<a href="#" class="ui-datepicker-btn ui-datepicker-next-btn">&gt;</a>'+
            '<span class="ui-datepicker-curr-month">'+monthData.year +'-'+monthData.month+'</span>'+
            '</div>'+

            '<div class="ui-datepicker-body">'+
            '<table>'+
            '<thead>'+
                '<tr>'+
                    '<th>一</th>'+
                    '<th>二</th>'+
                    '<th>三</th>'+
                    '<th>四</th>'+
                    '<th>五</th>'+
                    '<th>六</th>'+
                    '<th>日</th>'+
                '</tr>'+
            '</thead>'+

            '<tbody>';
                for(var i=0;i<monthData.days.length;i++){
                    var date = monthData.days[i];
                    if (i%7 ===0){
                        html +='<tr>';
                    }
                    html +='<td>'+date.showDate + '</td>';

                    if (i%7 ===6){
                        html +='</tr>';
                    }
                }
            html +='</tbody>'+
            '</table>'+
            '</div>';
    };

    datepicker.init=function ($dom) {
        var html = datepicker.buildUi();
        $dom.innerHTML = html;
    };
})();


正在回答

3 回答

详细描述一下,哪里不对?

0 回复 有任何疑惑可以回复我~
#1

邝chuanhui

(function () { })() 这样写是为了不去污染全局命名空间,这种写法创建了一个新的函数作用域,不会触碰到全局对象了。如果你需要全局对象, (function (global) { var datepacker = global.datepicker; })(this)
2017-09-14 回复 有任何疑惑可以回复我~

buildUi没返回html,其他看不出来

1 回复 有任何疑惑可以回复我~

循环那里应该是var date = MonthDate[i]

1 回复 有任何疑惑可以回复我~
#1

tpbaby

好像是的
2017-06-22 回复 有任何疑惑可以回复我~
#2

西兰花伟大炮 回复 tpbaby

那麻烦采纳一波啊
2017-06-22 回复 有任何疑惑可以回复我~
#3

慕的地1485338 回复 tpbaby

嗯嗯嗯
2017-06-22 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

数据为undefined,,求大佬帮看下

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信