html中如何实现签到功能
这篇文章主要介绍了html中如何实现签到功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇html中如何实现签到功能文章都会有所收获,下面我们一起来看看吧。
一些关键的地方
这个功能的编写思路是,先构建日期和签到相关数据,然后从服务端获取数据,并对原有数据进行更改,最后进行渲染。
这样子很好的摆脱了逻辑比较凌乱的问题,并且可以直接将这些数据用 vue.js 来挂载(本文没有这样做)。
生成日期数据
//生成日期数据functionbuildData(){varda={dates:[],//日期数据,从1号开始current:'',//当前日期monthFirst:1,//获取当月的1日等于星期几month:0,//当前月份days:30,//当前月份共有多少天day:0,//今天几号了isSigned:false,//今天是否已经签到signLastDays:3,//连续签到日子signToday:function(){this.isSigned=true;this.dates[this.day].isSigned=true;},};vards=[];//初始化日期数据vardt=newDate();da.current=dt.ToString('yyyy年M月d日');da.monthFirst=newDate(dt.getFullYear(),dt.getMonth(),1).getDay();da.month=dt.getMonth()+1;da.days=newDate(dt.getFullYear(),parseInt(da.month),0).getDate();//获取当前月的天数da.day=dt.getDate();for(vari=1;i<da.days+1;i++){varo={isSigned:false,//是否签到了num:i,//日期isToday:i==da.day,//是否今天isPass:i<da.day,//时间已过去};ds[i]=o;}da.dates=ds;returnda;}
有了数据之后,就可以将数据转换为界面了
//渲染数据functionrenderData(da){varsignDays=document.getElementById('spSignDays');signDays.innerText=da.signLastDays;varroot=document.getElementById("signTable");root.innerHTML='';vartr,td;varst=da.monthFirst;vardates=da.dates;varrowcount=0;//最多6行for(vari=0;i<42;i++){if(i%7==0){//如果没有日期了,中断if(i>(st+da.days))break;tr=document.createElement('tr');tr.className='darkcolortrb';root.appendChild(tr);rowcount++;}//前面或后面的空白if(i<st||!dates[i-st+1]){td=document.createElement('td');td.innerHTML='<divclass="sign-blank"><span></span></div>';tr.appendChild(td);continue;}//填充数字部分vard=dates[i-st+1];td=document.createElement('td');vartdcss='';if(d.isToday)tdcss='sign-today';elseif(d.isPass)tdcss='sign-pass';elsetdcss='sign-future';if(d.isSigned){tdcss='sign-signed'+tdcss;td.innerHTML='<divclass="'+tdcss+'"><span>'+d.num+'</span><svgxmlns="http://www.w3.org/2000/svg"version="1.1"class="sign-pinsvg-triangle"><polygonpoints="0,035,00,35"/></svg></div>';}else{tdcss='sign-unsign'+tdcss;td.innerHTML='<divclass="'+tdcss+'"><span>'+d.num+'</span></div>';}tr.appendChild(td);}//计算是否需要添加最后一行if((st+da.days+1)/7>rowcount)root.appendChild(tr);}//构建日期数据varda=buildData();//渲染renderData(da);
关于“html中如何实现签到功能”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“html中如何实现签到功能”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。