JS日历 推荐


Posted in Javascript onDecember 03, 2006

两年前写过一个日历,可是兼容性不好. 这次重新写了一次. 
兼容多种浏览器 
了解了不少东东,特别是对于W3C标准化. 
如 FF和IE 对box模型的理解不同 
box.style{width:100;border 1px;} 
ie理解 为 box.width = 100 
ff 理解 为 box.width = 100 + 1*2 = 102 
可以使用这种方法使两种浏览器都可以正常浏览 
box.style{width:100!important; width /**/:120px;border 1px;} 
注意 width(空格)/**/
JS日历 推荐下载此文件

/***********************  * 创建对象  var c = new Calendar("c"); document.write(c);  
* 调用方法 c.show(arg1,arg2,arg3)  
* 参数1: 文本输入框(必填). 如 onfocus="c.show(this)";  
* 参数2: 按钮或其它可用单击事件的HTML元素(如果使用按钮方式则必填).  
     如 onclick="c.show(this,c.getObjById(*))" *=文本输入框名称  
* 参数3: 如果没有文本框没有值则使用该值初始化日历(选填).  
     如 onfocus="c.show(this,'2006-01-01')  
* 注: 参数顺序不分先后. MSIE6/Opera8/FireFox1.5 下测试通过  
   
***如果您使用本日历控件 请保留该信息 谢谢! *****   
* http://2lin.net  
* Email:caoailin@gmail.com  
* QQ:38062022  
* Creation date: 2006-11-22  
************************************/  
function Calendar(objName)   
{  
this.style = {  
  borderColor    : "#909eff", //边框颜色  
  headerBackColor   : "#909EFF", //表头背景颜色  
  headerFontColor   : "#ffffff", //表头字体颜色  
  bodyBarBackColor  : "#f4f4f4", //日历标题背景色  
  bodyBarFontColor  : "#000000", //日历标题字体色  
  bodyBackColor   : "#ffffff", //日历背景色  
  bodyFontColor      : "#000000", //日历字体色  
  bodyHolidayFontColor   : "#ff0000", //假日字体色  
  watermarkColor   : "#d4d4d4", //背景水印色  
  moreDayColor       : "#cccccc"  
};  
this.showMoreDay = false; //是否显示上月和下月的日期  
this.Obj = objName;  
this.date = null;  
this.mouseOffset = null;  
this.dateInput = null;  
this.timer = null;  
};  
Calendar.prototype.toString = function()  
{   
  var str = this.getStyle();  
  str += '<div Author="alin" class="calendar" style="display:none;" onselectstart="return false" oncontextmenu="return false" id="Calendar">\n';  
  str += '<div Author="alin" class="cdrWatermark" id="cdrWatermark"></div><div id="cdrBody" style="position:absolute;left:0px;top:0px;z-index:2;width:140px;">';  
  str += this.getHeader();  
  str += this.getBody();   
  str += '</div><div Author="alin" id="cdrMenu" style="position:absolute;left:0px;top:0px;z-index:3;display:none;" onmouseover="' + this.Obj + '.showMenu(null);" onmouseout="' + this.Obj + '.hideMenu();"></div></div>';  
  return str;  
};  
Calendar.prototype.getStyle = function()  
{  
  var str = '<style type="text/css">\n';  
str += '.calendar{position:absolute;width:140px!important;width /**/:142px;height:184px!important;height /**/:174px;background-color:'+this.style.bodyBackColor+';border:1px solid ' + this.style.borderColor + ';left:0px;top:0px;z-index:9999;}\n';  
str += '.cdrHeader{background-color:'+ this.style.headerBackColor +';width:140px;height:22px;font-size:12px;color:'+this.style.headerFontColor+';}\n';  
str += '.cdrWatermark{position:absolute;left:0px;top:55px;width:140px;font-family: Arial Black;font-size:50px;color:'+this.style.watermarkColor+';z-index:1;text-align:center;}\n';  
str += '.cdrBodyBar{background-color:' + this.style.bodyBarBackColor + ';font-size:12px;color:' + this.style.bodyBarFontColor + ';width:140px;height:20px;}\n';  
str += '.cdrBody{width:140px;height:122px!important; height /**/:110px;font-size:12px;cursor:pointer;color:' + this.style.bodyFontColor + ';}\n';  
str += '.dayOver{height:16px;padding:0px;border:1px solid black;background-color:#f4f4f4;}\n';  
str += '.dayOut{padding:1px;border:none;height:16px;}\n';  
  str += '.menuOver{background-color:'+this.style.headerBackColor+';color:'+this.style.headerFontColor+';font-size:12px;}\n';  
str += '.headerOver{border:1px solid black;background-color:#f4f4f4;color:black;cursor:default;}\n';  
str += '.cdrMenu{font-size:12px;border:1px solid #000000;background-color:#ffffff;cursor:default;width:100%}\n';  
str += 'html>body #Calendar{width:142px;174px;}';  
str += '</style>\n';  
return str;  
};  
Calendar.prototype.getHeader = function()  
{  
  var str = '<table Author="alin" class="cdrHeader" cellSpacing="2" cellPadding="0"><tr Author="alin" align="center">\n';  
str += '<td Author="alin" onmouseover="this.className=\'headerOver\'" onmouseout="this.className=\'\'" id="previousYear" title="上一年份" style="cursor:pointer;width:10px;" onclick="'+this.Obj+'.onChangeYear(false);"><<</td>\n';  
str += '<td Author="alin" onmouseover="this.className=\'headerOver\'" onmouseout="this.className=\'\'" id="previousMonth" title="上一月份" style="cursor:pointer;width:10px;" onclick="'+this.Obj+'.onChangeMonth(false);"><</td>\n';  
str += '<td Author="alin" onmouseover="this.className=\'headerOver\'" id="currentYear" style="width:50px;" onclick="' + this.Obj + '.showMenu(true);" onmouseout="' + this.Obj + '.hideMenu();this.className=\'\';">0</td>\n';  
str += '<td Author="alin" onmouseover="this.className=\'headerOver\'" id="currentMonth" onclick="' + this.Obj + '.showMenu(false);" onmouseout="' + this.Obj + '.hideMenu();this.className=\'\';">0</td>\n';  
str += '<td Author="alin" onmouseover="this.className=\'headerOver\'" onmouseout="this.className=\'\'" id="nextMonth" title="下一月份" style="cursor:pointer;width:10px;" onclick="'+this.Obj+'.onChangeMonth(true);">></td>\n';  
str += '<td Author="alin" onmouseover="this.className=\'headerOver\'" onmouseout="this.className=\'\'" id="nextYear" title="下一年份" style="cursor:pointer;width:10px;" onclick="'+this.Obj+'.onChangeYear(true);">>></td></tr>\n';  
str += '</table>\n';  
return str;  
};  
Calendar.prototype.getBody = function()  
{  
  var n = 0;  
  var str = this.getBodyBar();  
  str += '<table Author="alin" class="cdrBody" cellSpacing="2" cellPadding="0">\n';   
  for(i = 0; i < 6; i++)  
{    
  str += '<tr Author="alin" align="center">';  
for(j = 0; j < 7; j++)  
{  
str += '<td Author="alin" class="dayOut" id="cdrDay'+(n++)+'" width="13%"></td>\n';  
}  
str += '</tr>';  
}  
  str += '</table>\n';  
  str += '<table Author="alin" class="cdrBodyBar" cellSpacing="2" cellPadding="0"><tr align="center" Author="alin"><td Author="alin" style="cursor:pointer;" onclick="'+this.Obj+'.getToday();">今天:'+new Date().toFormatString("yyyy年mm月dd日")+'</td></tr></table>\n';  
  return str;  
};  
Calendar.prototype.getBodyBar = function()  
{  
  var str = '<table Author="alin_bar" id="cdrBodyBar" class="cdrBodyBar" style="cursor:move;" cellSpacing="2" cellPadding="0"><tr Author="alin_bar" align="center">\n';  
  var day = new Array('日','一','二','三','四','五','六');  
  for(i = 0; i < 7; i++)  
  {  
   str += '<td Author="alin_bar">' + day[i] + '</td>\n';    
  }  
  str += '</tr></table>';  
  return str;   
}  
Calendar.prototype.getYearMenu = function(year)  
{  
  var str = '<table Author="alin" cellSpacing="0" class="cdrMenu" cellPadding="0">\n';  
  for(i = 0; i < 10; i++)  
{    
  var _year = year + i;  
var _date = new Date(_year,this.date.getMonth(),this.date.getDate());  
  str += '<tr Author="alin" align="center"><td Author="alin" width="13%" height="16" ';  
if(this.date.getFullYear() != _year)  
{  
str += 'onmouseover="this.className=\'menuOver\'" onmouseout="this.className=\'\'" ';  
}  
else  
{  
  str += 'class="menuOver"';  
}  
str += 'onclick="' + this.Obj + '.bindDate(\'' + _date.toFormatString("-") + '\')">' + _year + '年</td>\n';  
str += '</tr>';  
}  
  str += '<tr Author="alin" align="center"><td Author="alin"><table Author="alin" style="font-size:12px;width:100%;" cellSpacing="0" cellPadding="0">\n';  
  str += '<tr Author="alin" align="center"><td Author="alin" onmouseover="this.className=\'menuOver\'" onmouseout="this.className=\'\'" onclick="'+this.Obj+'.getYearMenu('+ (year - 10) + ')"><<</td>\n';  
  str += '<td Author="alin" onmouseover="this.className=\'menuOver\'" onmouseout="this.className=\'\'" onclick="'+this.Obj+'.getYearMenu('+ (year + 10) +')">>></td><tr>\n';  
  str += '</table></td></tr>\n';  
  str += '</table>';  
  var _menu = getObjById("cdrMenu");  
_menu.innerHTML = str;  
};  
Calendar.prototype.getMonthMenu = function()  
{  
  var str = '<table Author="alin" cellSpacing="0" class="cdrMenu" cellPadding="0">\n';  
  for(i = 1; i <= 12; i++)  
{   
var _date = new Date(this.date.getFullYear(),i-1,this.date.getDate());  
str += '</tr><tr Author="alin" align="center"><td Author="alin" height="16" ';  
if(this.date.getMonth() + 1 != i)  
{  
str += 'onmouseover="this.className=\'menuOver\'" onmouseout="this.className=\'\'" ';  
}  
else  
{  
  str += 'class="menuOver"';  
}  
str += 'onclick="' + this.Obj + '.bindDate(\'' + _date.toFormatString("-") + '\')">'+i+'月</td></tr>\n';  
}  
  str += '</table>';  
  var _menu = getObjById("cdrMenu");  
_menu.innerHTML = str;   
};  
Calendar.prototype.show = function()  
{  
  if (arguments.length > 3 || arguments.length == 0)  
  {  
   alert("对不起!传入参数不对!" );  
 return;  
}   
  var _date = null;  
  var _evObj = null;  
  var _initValue = null   
  for(i = 0; i < arguments.length; i++)  
  {  
   if(typeof(arguments[i]) == "object" && arguments[i].type == "text")  
  {_date = arguments[i];}  
 else if(typeof(arguments[i]) == "object")  
  {_evObj = arguments[i];}  
 else if(typeof(arguments[i]) == "string")  
  {_initValue = arguments[i];}   
  }  
  _evObj = _evObj || _date;  
inputObj = _date;  
targetObj = _evObj  
if(!_date){alert("传入参数错误!"); return;}  
  this.dateInput = _date;  
  _date = _date.value;  
  if(_date == "" && _initValue) _date = _initValue;   
  this.bindDate(_date);      
  var _target = getPosition(_evObj);   
  var _obj = getObjById("Calendar");  
  _obj.style.display = "";  
   
  _obj.style.left = _target.x + 'px';  
  if((document.body.clientHeight - (_target.y + _evObj.clientHeight)) >= _obj.clientHeight)  
  {      
   _obj.style.top = (_target.y + _evObj.clientHeight) + 'px';  
}  
else  
{    
    _obj.style.top = (_target.y - _obj.clientHeight) + 'px';  
}  
};  

Calendar.prototype.hide = function()  
{  
  var obj = getObjById("Calendar");  
obj.style.display = "none";   
};  
Calendar.prototype.bindDate = function(date)  
{  
var _monthDays = new Array(31,30,31,30,31,30,31,31,30,31,30,31);  
var _arr = date.split('-');  
  var _date = new Date(_arr[0],_arr[1]-1,_arr[2]);  
if(isNaN(_date)) _date = new Date();  
this.date = _date;  
this.bindHeader();  
var _year = _date.getFullYear();  
var _month = _date.getMonth();  
var _day = 1;  
var _startDay = new Date(_year,_month,1).getDay();  
var _previYear = _month == 0 ? _year - 1 : _year;  
var _previMonth = _month == 0 ? 11 : _month - 1;  
var _previDay = _monthDays[_previMonth];  
if (_previMonth == 1) _previDay =((_previYear%4==0)&&(_previYear%100!=0)||(_previYear%400==0))?29:28;  
_previDay -= _startDay - 1;  
var _nextDay = 1;  
_monthDays[1] = ((_year%4==0)&&(_year%100!=0)||(_year%400==0))?29:28;  
for(i = 0; i < 40; i++)  
{  
  var _dayElement = getObjById("cdrDay" + i);  
_dayElement.onmouseover = Function(this.Obj + ".onMouseOver(this)");  
_dayElement.onmouseout = Function(this.Obj + ".onMouseOut(this)");  
_dayElement.onclick = Function(this.Obj + ".onClick(this)");  
this.onMouseOut(_dayElement);  
_dayElement.style.color = "";  
if(i < _startDay)  
{  
  //获取上一个月的日期  
if(this.showMoreDay)  
{  
  var _previDate = new Date(_year,_month - 1,_previDay);  
  _dayElement.innerHTML = _previDay;  
  _dayElement.title = _previDate.toFormatString("yyyy年mm月dd日");  
    _dayElement.value = _previDate.toFormatString("-");  
  _dayElement.style.color = this.style.moreDayColor;  
    _previDay++;  
}else  
{  
  _dayElement.innerHTML = "";  
    _dayElement.title = "";  
}  
}  
else if(_day > _monthDays[_month])  
{  
  //获取下个月的日期  
  if(this.showMoreDay)  
{  
 var _nextDate = new Date(_year,_month + 1,_nextDay);  
 _dayElement.innerHTML = _nextDay;  
 _dayElement.title = _nextDate.toFormatString("yyyy年mm月dd日");  
   _dayElement.value = _nextDate.toFormatString("-");  
 _dayElement.style.color = this.style.moreDayColor;  
   _nextDay++;    
}else  
{  
  _dayElement.innerHTML = "";  
    _dayElement.title = "";  
}  
}  
else if(i >= new Date(_year,_month,1).getDay() && _day <= _monthDays[_month])  
{  
      //获取本月日期  
  _dayElement.innerHTML = _day;  
  if(_day == _date.getDate())  
  {  
   this.onMouseOver(_dayElement);  
 _dayElement.onmouseover = Function("");   
   _dayElement.onmouseout = Function("");       
  }  
    
  if(this.isHoliday(_year,_month,_day))  
  {  
   _dayElement.style.color = this.style.bodyHolidayFontColor;    
  }  
  var _curDate = new Date(_year, _month, _day);  
  _dayElement.title = _curDate.toFormatString("yyyy年mm月dd日");  
  _dayElement.value = _curDate.toFormatString("-");  
  _day++;  
}  
else  
{  
  _dayElement.innerHTML = "";  
  _dayElement.title = "";  
}  
}  
var _menu = getObjById("cdrMenu");  
_menu.style.display = "none";  
};  

Calendar.prototype.bindHeader = function()  
{  
  var _curYear = getObjById("currentYear");  
  var _curMonth = getObjById("currentMonth");  
  var _watermark = getObjById("cdrWatermark");  
  _curYear.innerHTML = this.date.toFormatString("yyyy年");  
  _curMonth.innerHTML = this.date.toFormatString("mm月");  
  _watermark.innerHTML = this.date.getFullYear();    
};  
Calendar.prototype.getToday = function()  
{  
  var _date = new Date();  
  this.bindDate(_date.toFormatString("-"));  
};  
Calendar.prototype.isHoliday = function(year,month,date)  
{  
  var _date = new Date(year,month,date);  
  return (_date.getDay() == 6 || _date.getDay() == 0);  
};  
Calendar.prototype.onMouseOver = function(obj)  
{  
  obj.className = "dayOver";  
};  

Calendar.prototype.onMouseOut = function(obj)  
{  
  obj.className = "dayOut";  
};  
Calendar.prototype.onClick = function(obj)  
{   
 if(obj.innerHTML != "") this.dateInput.value = obj.value;  
 this.hide();  
};  
Calendar.prototype.onChangeYear = function(isnext)  
{  
  var _year = this.date.getFullYear();  
  var _month = this.date.getMonth() + 1;  
  var _date = this.date.getDate();  
  if(_year > 999 && _year <10000)  
  {  
    if(isnext){_year++;}else{ _year --;}  
  }  
  else  
  {  
   alert("年份超出范围(1000-9999)!");  
  }  
  this.bindDate(_year + '-' + _month + '-' + _date);  
};  
Calendar.prototype.onChangeMonth = function(isnext)  
{  
  var _year = this.date.getFullYear();  
  var _month = this.date.getMonth() + 1;  
  var _date = this.date.getDate();  
  if(isnext){ _month ++;} else {_month--;}  
  if(_year > 999 && _year <10000)  
  {  
    if(_month < 1) {_month = 12; _year--;}  
if(_month > 12) {_month = 1; _year++;}  
  }  
  else  
  {  
   alert("年份超出范围(1000-9999)!");  
  }   
  this.bindDate(_year + '-' + _month + '-' + _date);  
};  
Calendar.prototype.showMenu = function(isyear)  
{  
 var _menu = getObjById("cdrMenu");  
 if(isyear != null)  
 {  
var _obj = (isyear)? getObjById("currentYear") : getObjById("currentMonth");  
if(isyear)  
{  
  this.getYearMenu(this.date.getFullYear() - 5);    
}  
else  
{  
  this.getMonthMenu();    
}  
_menu.style.top = (_obj.offsetTop + _obj.offsetHeight) + 'px';  
_menu.style.left = _obj.offsetLeft + 'px';  
_menu.style.width = _obj.offsetWidth + 'px';  
  }  
if (this.timer != null) clearTimeout(this.timer);  
_menu.style.display="";  
}  
Calendar.prototype.hideMenu = function()  
{  
  var _obj = getObjById("cdrMenu");  
  this.timer = window.setTimeout(function(){_obj.style.display='none';},500);  
}  
Number.prototype.NaN0 = function()  
{  
  return isNaN(this) ? 0 : this;  
}  
Date.prototype.toFormatString = function(fs)  
{  
  if(fs.length == 1)  
  {  
   return this.getFullYear() + fs + (this.getMonth() + 1) + fs + this.getDate();  
  }  
  fs = fs.replace("yyyy",this.getFullYear());  
  fs = fs.replace("mm",(this.getMonth() + 1));  
  fs = fs.replace("dd",this.getDate());  
  return fs;  
}  
/******************************************公用方法及变量********************************************************/  
var inputObj = null; //输入对象  
var targetObj = null; //单击目标对象  
var dragObj = null; //拖动目标对象  
var mouseOffset = null; //拖动目标的位置  
//获取对象  
function getObjById(obj)  
{  
  if(document.getElementById)  
  {  
   return document.getElementById(obj);  
  }  
  else  
  {  
   alert("浏览器不支持!");  
  }  
}  
//获取鼠标位置  
function mouseCoords(ev)  
{  
if(ev.pageX || ev.pageY){  
return {x:ev.pageX, y:ev.pageY};  
}  
return {  
x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,  
y:ev.clientY + document.body.scrollTop - document.body.clientTop  
};  
}  
//获取目标的绝对位置  
function getPosition(e)  
{  
var left = 0;  
var top = 0;  
while (e.offsetParent){  
left += e.offsetLeft + (e.currentStyle?(parseInt(e.currentStyle.borderLeftWidth)).NaN0():0);  
top += e.offsetTop + (e.currentStyle?(parseInt(e.currentStyle.borderTopWidth)).NaN0():0);  
e   = e.offsetParent;  
}  
left += e.offsetLeft + (e.currentStyle?(parseInt(e.currentStyle.borderLeftWidth)).NaN0():0);  
top += e.offsetTop + (e.currentStyle?(parseInt(e.currentStyle.borderTopWidth)).NaN0():0);  
return {x:left, y:top};  
}  
//获取鼠标的偏移值  
function getMouseOffset(target, ev)  
{  
ev = ev || window.event;  
var docPos  = getPosition(target);  
var mousePos = mouseCoords(ev);  
return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};  
}  
//关闭日历  
function closeCalendar(evt){  
evt = evt || window.event;  
var _target= evt.target || evt.srcElement;  
if(!_target.getAttribute("Author") && _target != inputObj && _target != targetObj)  
{  
  getObjById("Calendar").style.display = "none";    
}   
}  
//拖动日历开始  
function dragStart(evt){  
  evt = evt || window.event;  
var _target= evt.target || evt.srcElement;  
if(_target.getAttribute("Author") == "alin_bar")  
{    
  dragObj = getObjById("Calendar");    
  mouseOffset = getMouseOffset(dragObj, evt);  
}   
}  
//拖动日历中  
function drag(evt)  
{  
  evt = evt || window.event;  
if(dragObj)  
{    
 var mousePos = mouseCoords(evt);  
 dragObj.style.left = (mousePos.x - mouseOffset.x) + 'px';  
 dragObj.style.top = (mousePos.y - mouseOffset.y) + 'px';    
}  
}  
//拖动结束  
function dragEnd(evt)  
{  
  dragObj = null;    
}  
/*****end 公用方法***************/  

document.onclick = closeCalendar;  
document.onmousedown = dragStart;  
document.onmousemove = drag;  
document.onmouseup = dragEnd;  

/*****************结束********************/
Javascript 相关文章推荐
JQuery的自定义事件代码,触发,绑定简单实例
Aug 01 Javascript
js的toUpperCase方法用法实例
Jan 27 Javascript
深入理解JavaScript系列(26):设计模式之构造函数模式详解
Mar 03 Javascript
JavaScript实现数字数组正序排列的方法
Apr 06 Javascript
JavaScript每天必学之事件
Sep 18 Javascript
正则表达式,替换所有HTML标签的简单实例
Nov 28 Javascript
JavaScript 栈的详解及实例代码
Jan 22 Javascript
JS实现按钮控制计时开始和停止功能
Jul 27 Javascript
浅谈angular4生命周期钩子
Sep 05 Javascript
基于Datatables跳转到指定页的简单实例
Nov 09 Javascript
js中document.write和document.writeln的区别
Mar 11 Javascript
vue实现图片裁剪后上传
Dec 16 Vue.js
Js的MessageBox
Dec 03 #Javascript
硬盘浏览程序,保存成网页格式便可使用
Dec 03 #Javascript
常用js脚本
Dec 03 #Javascript
论坛特效代码收集(落伍转发-不错)
Dec 02 #Javascript
线路分流自动跳转代码;希望对大家有用!
Dec 02 #Javascript
phpwind放自动注册方法
Dec 02 #Javascript
一段好玩的JavaScript代码
Dec 01 #Javascript
You might like
PHP4实际应用经验篇(1)
2006/10/09 PHP
apache2.2.4+mysql5.0.77+php5.2.8安装精简
2009/04/29 PHP
PHP设计模式 注册表模式(多个类的注册)
2012/02/05 PHP
PHP实现提取一个图像文件并在浏览器上显示的代码
2012/10/06 PHP
php连接mssql的一些相关经验及注意事项
2013/02/05 PHP
php程序员应具有的7种能力小结
2014/11/27 PHP
PHP中使用imagick生成PSD文件缩略图教程
2015/01/26 PHP
php表单提交与$_POST实例分析
2015/01/26 PHP
学习jquery必备 api中英文对照的chm手册 下载
2007/05/03 Javascript
JS 拼图游戏 面向对象,注释完整。
2009/06/18 Javascript
js loading加载效果实现代码
2009/11/24 Javascript
juqery 学习之四 筛选过滤
2010/11/30 Javascript
Jquery Change与bind事件代码
2011/09/29 Javascript
JS JSON对象转为字符串的简单实现方法
2013/11/18 Javascript
js日期对象兼容性的处理方法
2014/01/28 Javascript
addEventListener 的用法示例介绍
2014/05/07 Javascript
js中将String转换为number以便比较
2014/07/08 Javascript
JavaScript 数组的深度复制解析
2016/11/02 Javascript
BootStrap 图标icon符号图标glyphicons不正常显示的快速解决办法
2016/12/08 Javascript
JS中SetTimeout和SetInterval使用初探
2017/03/23 Javascript
vue2实现搜索结果中的搜索关键字高亮的代码
2018/08/29 Javascript
Vue.js 十五分钟入门图文教程
2018/09/12 Javascript
js实现多个标题吸顶效果
2020/01/08 Javascript
vue 内联样式style中的background用法说明
2020/08/05 Javascript
[49:59]KG vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python Pexpect 实现输密码 scp 拷贝的方法
2019/01/03 Python
Python实现求两个数组交集的方法示例
2019/02/23 Python
python3获取当前目录的实现方法
2019/07/29 Python
Python 常用日期处理 -- calendar 与 dateutil 模块的使用
2020/09/02 Python
家庭户外服装:Hawkshead
2017/11/02 全球购物
什么是数组名
2012/05/10 面试题
《月迹》教学反思
2014/02/19 职场文书
说明书范文
2014/05/07 职场文书
Python requests库参数提交的注意事项总结
2021/03/29 Python
使用Oracle跟踪文件的问题详解
2021/06/28 Oracle
MySQL窗口函数的具体使用
2021/11/17 MySQL