如何为这个用javascript制作的日历添加工具提示

如何为这个用javascript制作的日历添加工具提示,javascript,html,Javascript,Html,我有这个日历(nicedaypicker),在后端php的帮助下,我在一个数组中获得了一些事件日期(var events=[];值的格式是:ex:2019/11/10),我想为该数组中的日期添加一个工具提示 this.$warpper.addEventListener('load', function (e) { i want to make something here to add a tooltip class on load of calendar }, false)

我有这个日历(nicedaypicker),在后端php的帮助下,我在一个数组中获得了一些事件日期(var events=[];值的格式是:ex:2019/11/10),我想为该数组中的日期添加一个工具提示

this.$warpper.addEventListener('load', function (e) { i want to make something here to add a tooltip class on load of calendar }, false); 此.warpper.addEventListener('load',函数(e){ 我想在这里制作一些东西,在加载日历时添加工具提示类 },假); var事件=[]; (功能(全球、工厂){ typeof exports==='object'&&typeof module!=='undefined'?module.exports=factory(): typeof define==“函数”&&define.amd?定义(工厂): (global.calendar=factory()); }(这个,功能(){ "严格使用",; var calendar=函数($params){ 这是。$warpper=null; this.monthData=null; 这。$params=$params; this.init(this.params); }; calendar.prototype.getMonthData=函数(年、月){ 年、月; var-ret=[]; 如果(!年| |!月){ var today=新日期(); 年=今天。getFullYear(); 月份=今天。getMonth()+1; } var firstDay=新日期(年,月-1,1); var firstDayWeekDay=firstDay.getDay(); 如果(第一天工作日===0){ firstDayWeekDay=7; } 年份=第一天。getFullYear(); 月=第一天。getMonth()+1; var lastDayOfLastMonth=新日期(年,月-1,0); var lastDateOfLastMonth=lastDayOfLastMonth.getDate(); var preMonthDayCount=firstDayWeekDay-1; var lastDay=新日期(年、月、0); var lastDate=lastDay.getDate() var styleCls=''; 对于(var i=0;i lastDate){ 本月=月+1; showDate=showDate-lastDate; styleCls=‘漂亮的灰色’; }否则{ var today=新日期(); 如果(showDate==today.getDate()&&thisMonth===today.getMonth()+1){ styleCls=‘正常良好电流’; }否则{ styleCls=‘良好正常’; } } 如果(本月===13){ 本月=1; } 如果(本月===0){ 本月=12; } 后推({ 月份:这个月, 日期:日期:, showDate:showDate, styleCls:styleCls }); } 返回{ 年份:年份,, 月:月,, 日期:ret }; }; calendar.prototype.buildUi=函数(年、月){ this.monthData=this.getMonthData(年、月); this.dayWords=[[Lun]、[Mar]、[Mer]、[Gio]、[Ven]、[Sab]、[Dom]、[Mo]、[Tu]、[We]、[Th]、[Fr]、[Sa]、[Su]; this.enmonthwords=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月]; var html=''+ '' + '' + '' + '' + '' + '' + ''; 如果(!this.$params.mode){ this.$params.mode='it'; 对于(var i=0;i'+this.dayWords[0][i]+''; } }else if(此.$params.mode==='en'){ 对于(var i=0;i'+this.dayWords[1][i]+''; } }else if(this.$params.mode==='it'){ 对于(var i=0;i'+this.dayWords[0][i]+''; } } html+=''+ '' + ''; 对于(var i=0;i’; } html+=''+this.monthData.date[i].showDate+''; 如果(i%7==6){ html+=''; } } html+=''+ '' + '' + ''; 返回html; }; calendar.prototype.render=函数(方向,$params){ 年、月; 如果(本月数据){ year=this.monthData.year; 月份=this.monthData.month; }否则{ 年份=$params.year; 月份=$params.month; } 如果(方向=='prev'){ 月--; 如果(月===0){ 月=12; 年--; } } 如果(方向==“下一步”){ 月份++; } var html=this.buildUi(年、月); 这是。$warpper.innerHTML=html; }; calendar.prototype.init=函数($params){ 这。$warpper=$params.dom; 此。呈现(“”,$params); var_this=这个; 此.warpper.addEventListener('click',函数(e){ var$target=e.target; if($target.classList.contains('prev-date-btn')){ _本。呈现(“上一个”); } if($target.classList.contains('next-date-btn')){ _this.render('next'); } if($target.classList.contains('nice-normal')){ $params.onClickDate($target.getAttribute('data-date'); } },假); 此.warpper.addEventListener('mouseover',函数(e){ var$target=e.target; if($target.classList.contains('nice-normal')){ $target.classList.add('nice-active'); } },假); 此.warpper.addEventListener('mouseout',函数(e){ var$target=e.target; if($target.classList.contains('nice-normal')){ $target.classList.remove('nice-active'); } },假); 此.warpper.addEventListener('load',函数(e){ },假); }; 返回日历; }));
我们看到的脚本太多了。请缩小问题范围,只显示需要我们注意的内容。如果要将数组数据显示为单个字符串,则要研究的函数是
join()<
var events = [];



(function (global, factory) {
    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
        typeof define === 'function' && define.amd ? define(factory) :
            (global.calendar = factory());
}(this, function () {
    'use strict';

    var calendar = function ($params) {
        this.$warpper = null;
        this.monthData = null;
        this.$params = $params;
        this.init(this.$params);
    };

    calendar.prototype.getMonthData = function (year, month) {
        var 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();

        var preMonthDayCount = firstDayWeekDay - 1;

        var lastDay = new Date(year, month, 0);

        var lastDate = lastDay.getDate()
        var styleCls = '';
        for (var i = 0; i  lastDate) {
                thisMonth = month + 1;
                showDate = showDate - lastDate;
                styleCls = 'nice-gray';
            } else {
                var today = new Date();
                if (showDate === today.getDate() && thisMonth === today.getMonth() + 1) {
                    styleCls = 'nice-normal nice-current';
                } else {
                    styleCls = 'nice-normal';
                }


            }

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

            ret.push({
                month: thisMonth,
                date: date,
                showDate: showDate,
                styleCls: styleCls
            });
        }
        return {
            year: year,
            month: month,
            date: ret
        };
    };

    calendar.prototype.buildUi = function (year, month) {
        this.monthData = this.getMonthData(year, month);
        this.dayWords = [['Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab', 'Dom'], ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']];
        this.enMonthsWords = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];


        var html = '' +
            '' +
            '<';

        if (!this.$params.mode) {
            this.$params.mode = 'it';
            html += '' + this.monthData.year + '年 - ' + this.monthData.month + '月';
        } else if (this.$params.mode === 'en') {
            html += '' + this.enMonthsWords[this.monthData.month - 1] + ',' + this.monthData.year + '';
        } else if (this.$params.mode === 'it') {
            html += '' + this.monthData.year + '年 - ' + this.monthData.month + '月';
        }

        html += '>' +
            '' +
            '' +
            '' +
            '' +
            '';
        if (!this.$params.mode) {
            this.$params.mode = 'it';
            for (var i = 0; i ' + this.dayWords[0][i] + '';
            }
        } else if (this.$params.mode === 'en') {
            for (var i = 0; i ' + this.dayWords[1][i] + '';
            }
        } else if (this.$params.mode === 'it') {
            for (var i = 0; i ' + this.dayWords[0][i] + '';
            }
        }
        html += '' +
            '' +
            '';

      for (var i = 0; i ';
            }
            html += '' + this.monthData.date[i].showDate + '';
            if (i % 7 === 6) {
                html += '';
            }
        }


        html += '' +
            '' +
            '' +
            '';


        return html;

    };

    calendar.prototype.render = function (direction, $params) {
        var year, month;
        if (this.monthData) {

            year = this.monthData.year;
            month = this.monthData.month;

        } else {
            year = $params.year;
            month = $params.month;
        }
        if (direction === 'prev') {
            month--;
            if (month === 0) {
                month = 12;
                year--;
            }
        }
        if (direction === 'next') {
            month++;

        }
        var html = this.buildUi(year, month);
        this.$warpper.innerHTML = html;
    };
    calendar.prototype.init = function ($params) {
        this.$warpper = $params.dom;
        this.render('', $params);
        var _this = this;
        this.$warpper.addEventListener('click', function (e) {
            var $target = e.target;
            if ($target.classList.contains('prev-date-btn')) {

                _this.render('prev');

            }
            if ($target.classList.contains('next-date-btn')) {

                _this.render('next');

            }
            if ($target.classList.contains('nice-normal')) {

                $params.onClickDate($target.getAttribute('data-date'));

            }
        }, false);
        this.$warpper.addEventListener('mouseover', function (e) {
            var $target = e.target;
            if ($target.classList.contains('nice-normal')) {

                $target.classList.add('nice-active');


            }
        }, false);
        this.$warpper.addEventListener('mouseout', function (e) {
            var $target = e.target;
            if ($target.classList.contains('nice-normal')) {

                $target.classList.remove('nice-active');


            }

        }, false);
            this.$warpper.addEventListener('load', function (e) {


        }, false);

    };
    return calendar;
}));