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 相关文章推荐
javascript写的一个链表实现代码
Oct 25 Javascript
JavaScipt中的Math.ceil() 、Math.floor() 、Math.round() 三个函数的理解
Apr 29 Javascript
javascript中数组的sort()方法的使用介绍
Dec 18 Javascript
类似天猫商品详情随浏览器移动的示例代码
Feb 27 Javascript
JavaScript实现判断图片是否加载完成的3种方法整理
Mar 13 Javascript
javascript格式化日期时间方法汇总
Jun 19 Javascript
使用jQuery的easydrag插件实现可拖动的DIV弹出框
Feb 19 Javascript
js滑动提示效果代码分享
Mar 10 Javascript
深入浅析JS Function()构造函数
Aug 22 Javascript
BootStrap iCheck插件全选与获取value值的解决方法
Aug 24 Javascript
浅析JavaScript中var that=this
Feb 17 Javascript
在react中使用vue的状态管理的方法示例
May 02 Javascript
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
基于在生产环境中使用php性能测试工具xhprof的详解
2013/06/03 PHP
php把数组值转换成键的方法
2015/07/13 PHP
js使下拉列表框可编辑不止是选择
2013/12/12 Javascript
Javascript 实现图片无缝滚动
2014/12/19 Javascript
jQuery取消ajax请求的方法
2015/06/09 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
2016/07/28 Javascript
node.js Sequelize实现单实例字段或批量自增、自减
2016/12/08 Javascript
jQuery弹出层插件popShow用法示例
2017/01/23 Javascript
微信页面弹出键盘后iframe内容变空白的解决方案
2017/09/20 Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
2018/06/26 Javascript
深入学习Vue nextTick的用法及原理
2019/10/08 Javascript
es6数组的flat(),flatMap()函数用法实例分析
2020/04/18 Javascript
[07:52]2014DOTA2 TI逗比武士游V社解说背后的故事
2014/07/10 DOTA
Python中的面向对象编程详解(上)
2015/04/13 Python
Python 迭代器与生成器实例详解
2017/05/18 Python
python celery分布式任务队列的使用详解
2019/07/08 Python
Tensorflow实现多GPU并行方式
2020/02/03 Python
python之生成多层json结构的实现
2020/02/27 Python
Django+Uwsgi+Nginx如何实现生产环境部署
2020/07/31 Python
Python爬虫制作翻译程序的示例代码
2021/02/22 Python
Python的Tqdm模块实现进度条配置
2021/02/24 Python
HTML5的新特性(1)
2016/03/03 HTML / CSS
Foot Locker意大利官网:全球领先的运动鞋和服装零售商
2017/05/30 全球购物
水上运动奥特莱斯:Wasterports Outlet
2018/08/08 全球购物
请说出几个常用的异常类
2013/01/08 面试题
使用索引(Index)有哪些需要考虑的因素
2016/10/19 面试题
.net工程师笔试题
2012/06/09 面试题
大学生工作推荐信范文
2013/12/02 职场文书
渡河少年教学反思
2014/02/12 职场文书
婚假请假条怎么写
2014/04/10 职场文书
渠道运营商合作协议书范本
2014/10/06 职场文书
免职证明样本
2014/10/23 职场文书
校本课程教学计划
2015/01/19 职场文书
盗窃罪辩护词范文
2015/05/21 职场文书
2015初中团支部工作总结
2015/07/21 职场文书
python基础之文件操作
2021/10/24 Python