当前位置:  编程技术>移动开发
本页文章导读:
    ▪ndk_jni施用        ndk_jni使用 NDK 是一系列工具的集合,提供了一份稳定、功能有限的API头文件声明;   在android中,请简述jni的调用过程。 1)安装和下载Cygwin,下载 Android NDK   2)在ndk项目中JNI接口的设计   .........
    ▪ 梅花雨年历控件        梅花雨日历控件 Javascript_04_梅花雨日历控件   马士兵老师认为这个控件做得不错,要求我们能直接拿来,在个人网站上使用。   测试效果:     梅花雨日历控件         .........
    ▪ Objective-C会合 (一)——NSString       Objective-C集合 (一)——NSString     Cocoa由两个框架组成:FoundationKit和ApplicationKit。 ApplicationKit:存放了所有的用户接口对象和高级类 FoundationKit:有许多实用的面向数据的低级类和数据类型.........

[1]ndk_jni施用
    来源: 互联网  发布时间: 2014-02-18
ndk_jni使用

NDK 是一系列工具的集合,提供了一份稳定、功能有限的API头文件声明;

 

在android中,请简述jni的调用过程。

1)安装和下载Cygwin,下载 Android NDK

  2)在ndk项目中JNI接口的设计

  3)使用C/C++实现本地方法

  4)JNI生成动态链接库.so文件

  5)将动态链接库复制到java工程,在java工程中调用,运行java工程即可


    
[2] 梅花雨年历控件
    来源: 互联网  发布时间: 2014-02-18
梅花雨日历控件

Javascript_04_梅花雨日历控件

 

马士兵老师认为这个控件做得不错,要求我们能直接拿来,在个人网站上使用。

 

  • 测试效果:
  •  

     

    梅花雨日历控件

     

     

     

      一般焦点用法

       按钮用法

      不能输入,只能选择

     

     

    说明:可以直接进行日期的选择,很方便。

     

  • 测试程序InputBoxCalendar.htm
  •  

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

    <!-- saved from url=(0038)http://www.zwtd.com/2/treeview/rl.html -->

     

    <HTML>

          <HEAD>

                <TITLE>InputBox Calendar</TITLE>

               

                <META http-equiv=Content-Type content="text/html; charset=gb2312">

                <STYLE>

                      BODY {

                            FONT-SIZE: 10pt; LINE-HEIGHT: 14pt; FONT-FAMILY: "MS UI Gothic", "Verdana"

                      }

                      TABLE {

                            FONT-SIZE: 10pt; LINE-HEIGHT: 14pt; FONT-FAMILY: "MS UI Gothic", "Verdana"

                      }

                      .ListTitle {

                            FONT-WEIGHT: bold; FONT-SIZE: 12pt; COLOR: #ffffff

                      }

                      INPUT {

                            BORDER-RIGHT: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; BORDER-BOTTOM: 1px solid

                      }

                </STYLE>

               

                <SCRIPT language=JavaScript src="/blog_article/meizzDate.js"></SCRIPT>

                <META content="MSHTML 5.50.4522.1800" name=GENERATOR>

          </HEAD>

     

          <BODY bgColor=#f4faff>

                <TABLE

                     

                      cellSpacing=0 cellPadding=3 width="100%" border=0>

                  <TBODY>

                        <TR bgColor=#0080c0>

                          <TD class=ListTitle align=middle colSpan=3>梅花雨日历控件</TD>

                        </TR>

                       

                        <TR bgColor=#d0e4f9 height=20>

                          <TD align=middle colSpan=3>&nbsp;</TD>

                        </TR>

                       

                        <TR height=20>

                          <TD align=middle colSpan=3>&nbsp;</TD>

                        </TR>

                       

                        <TR bgColor=#ffffff>

                          <TD width="5%">&nbsp;</TD>

                          <TD align=left width="60%"><INPUT onfocus=setday(this)>&nbsp;&nbsp;一般焦点用法

                            <P><INPUT name=txt>&nbsp;&nbsp;<INPUT onclick=setday(this,document.all.txt) type=button value=按钮用法>

                            <P><INPUT onfocus=setday(this) readOnly>&nbsp;&nbsp;不能输入,只能选择 </P>

                          </TD>

                          <TD></TD>

                        </TR>

                       

                        <TR height=20>

                          <TD align=middle colSpan=3>&nbsp;</TD>

                        </TR>

                       

                        <TR bgColor=#d0e4f9 height=20>

                          <TD align=middle colSpan=3>&nbsp;</TD>

                        </TR>

                       

                    </TBODY>

                 </TABLE>

           </BODY>

    </HTML>

     

     

    3. meizzDate.js

     

    //----------------------------------------

    //  这是梅花雨做的一个日历 Javascript 页面脚本控件,适用于微软的 IE (5.0以上)浏览器

    //  主调用函数是 setday(this,[object])和setday(this),[object]是控件输出的控件名,举两个例子:

    //  一、<input name=txt><input type=button value=setday onclick="setday(this,document.all.txt)">

    //  二、<input onfocus="setday(this)">

    //  若有什么不足的地方,或者您有更好的建议,请与我联系:mail: meizz@hzcnc.com

    //  本日历的年份限制是(1000 - 9999)

    //  按ESC键关闭该控件

    //  在年和月的显示地方点击时会分别出年与月的下拉框

    //  控件外任意点击一点即可关闭该控件

    /* 以下为walkingpoison的修改说明

    walkingpoison联系方式:wayx@kali.com.cn

     

    Ver   2.0

    修改日期:2002-12-13

    修改内容:

    1.*全新修改使用iframe作为日历的载体,不再被select和flash等控件挡住。

    2.修正了移植到iframe后移动日历控件的问题。

     

    Ver   1.5

    修改日期:2002-12-4

    修改内容:

    1.选中的日期显示为凹下去的样式

    2.修改了关闭层的方法,使得失去焦点的时候能够关闭日历。

    3.修改按键处理,使得Tab切换焦点的时候可以关闭控件

    4.*可以自定义日历是否可以拖动

     

    Ver 1.4

    修改日期:2002-12-3

    修改内容:

    1.修正选中年/月份下拉框后按Esc键导致年/月份不显示的问题

    2.修正使用下拉框选择月份造成的日期错误(字符串转化为数字的问题)

    3.*外观样式的改进,使得控件从丑小鸭变成了美丽的天鹅,从灰姑娘变成了高贵的公主,从……(读者可以自己进行恰当的比喻)

    4.再次增大年/月份的点击空间,并对下拉框的位置稍作调整

     

    注:*号表示比较关键的改动

     

    说明:

    1.受到iframe的限制,如果拖动出日历窗口,则日历会停止移动。

    */

     

    //==================================================== 参数设定部分 =======================================================

    var bMoveable=true;           //设置日历是否可以拖动

    var _VersionInfo="Version:2.0&#13;2.0作者:walkingpoison&#13;1.0作者: F.R.Huang(meizz)&#13;MAIL: meizz@hzcnc.com"    //版本信息

     

    //==================================================== WEB 页面显示部分 =====================================================

    var strFrame;           //存放日历层的HTML代码

    document.writeln('<iframe id=meizzDateLayer Author=wayx frameborder=0 ></iframe>');

    strFrame='<style>';

    strFrame+='INPUT.button{BORDER-RIGHT: #ff9900 1px solid;BORDER-TOP: #ff9900 1px solid;BORDER-LEFT: #ff9900 1px solid;';

    strFrame+='BORDER-BOTTOM: #ff9900 1px solid;BACKGROUND-COLOR: #fff8ec;font-family:宋体;}';

    strFrame+='TD{FONT-SIZE: 9pt;font-family:宋体;}';

    strFrame+='</style>';

    strFrame+='<scr' + 'ipt>';

    strFrame+='var datelayerx,datelayery;     /*存放日历控件的鼠标位置*/';

    strFrame+='var bDrag;   /*标记是否开始拖动*/';

    strFrame+='function document.onmousemove()      /*在鼠标移动事件中,如果开始拖动日历,则移动日历*/';

    strFrame+='{if(bDrag && window.event.button==1)';

    strFrame+=' {var DateLayer=parent.document.all.meizzDateLayer.style;';

    strFrame+='       DateLayer.posLeft += window.event.clientX-datelayerx;/*由于每次移动以后鼠标位置都恢复为初始的位置,因此写法与div中不同*/';

    strFrame+='       DateLayer.posTop += window.event.clientY-datelayery;}}';

    strFrame+='function DragStart()           /*开始日历拖动*/';

    strFrame+='{var DateLayer=parent.document.all.meizzDateLayer.style;';

    strFrame+=' datelayerx=window.event.clientX;';

    strFrame+=' datelayery=window.event.clientY;';

    strFrame+=' bDrag=true;}';

    strFrame+='function DragEnd(){            /*结束日历拖动*/';

    strFrame+=' bDrag=false;}';

    strFrame+='</scr' + 'ipt>';

    strFrame+='<div onselectstart="return false"><span id=tmpSelectYearLayer Author=wayx ></span>';

    strFrame+='<span id=tmpSelectMonthLayer Author=wayx ></span>';

    strFrame+='<table border=1 cellspacing=0 cellpadding=0 width=142 height=160 bordercolor=#ff9900 bgcolor=#ff9900 Author="wayx">';

    strFrame+='  <tr Author="wayx"><td width=142 height=23 Author="wayx" bgcolor=#FFFFFF><table border=0 cellspacing=1 cellpadding=0 width=140 Author="wayx" height=23>';

    strFrame+='      <tr align=center Author="wayx"><td width=16 align=center bgcolor=#ff9900 ';

    strFrame+='        onclick="parent.meizzPrevM()" title="向前翻 1 月" Author=meizz><b Author=meizz>&lt;</b>';

    strFrame+='        </td><td width=60 align=center Author=meizz ';

    strFrame+='onmouseover="style.backgroundColor=/'#FFD700/'" onmouseout="style.backgroundColor=/'white/'" ';

    strFrame+='onclick="parent.tmpSelectYearInnerHTML(this.innerText.substring(0,4))" title="点击这里选择年份"><span Author=meizz id=meizzYearHead></span></td>';

    strFrame+='<td width=48 align=center Author=meizz onmouseover="style.backgroundColor=/'#FFD700/'" ';

    strFrame+=' onmouseout="style.backgroundColor=/'white/'" onclick="parent.tmpSelectMonthInnerHTML(this.innerText.length==3?this.innerText.substring(0,1):this.innerText.substring(0,2))"';

    strFrame+='        title="点击这里选择月份"><span id=meizzMonthHead Author=meizz></span></td>';

    strFrame+='        <td width=16 bgcolor=#ff9900 align=center ';

    strFrame+='         onclick="parent.meizzNextM()" title="向后翻 1 月" Author=meizz><b Author=meizz>&gt;</b></td></tr>';

    strFrame+='    </table></td></tr>';

    strFrame+='  <tr Author="wayx"><td width=142 height=18 Author="wayx">';

    strFrame+='<table border=1 cellspacing=0 cellpadding=0 bgcolor=#ff9900 ' + (bMoveable? 'onmousedown="DragStart()" onmouseup="DragEnd()"':'');

    strFrame+=' BORDERCOLORLIGHT=#FF9900 BORDERCOLORDARK=#FFFFFF width=140 height=20 Author="wayx" + (bMoveable ? 'move':'default') + '">';

    strFrame+='<tr Author="wayx" align=center valign=bottom><td Author=meizz>日</td>';

    strFrame+='<td Author=meizz>一</td><td Author=meizz>二</td>';

    strFrame+='<td Author=meizz>三</td><td Author=meizz>四</td>';

    strFrame+='<td Author=meizz>五</td><td Author=meizz>六</td></tr>';

    strFrame+='</table></td></tr><!-- Author:F.R.Huang(meizz) http://www.meizz.com/ mail: meizz@hzcnc.com 2002-10-8 -->';

    strFrame+='  <tr Author="wayx"><td width=142 height=120 Author="wayx">';

    strFrame+='    <table border=1 cellspacing=2 cellpadding=0 BORDERCOLORLIGHT=#FF9900 BORDERCOLORDARK=#FFFFFF bgcolor=#fff8ec width=140 height=120 Author="wayx">';

    var n=0; for (j=0;j<5;j++){ strFrame+= ' <tr align=center Author="wayx">'; for (i=0;i<7;i++){

    strFrame+='<td width=20 height=20 id=meizzDay'+n+' Author=meizz onclick=parent.meizzDayClick(this.innerText,0)></td>';n++;}

    strFrame+='</tr>';}

    strFrame+='      <tr align=center Author="wayx">';

    for (i=35;i<39;i++)strFrame+='<td width=20 height=20 id=meizzDay'+i+' Author=wayx onclick="parent.meizzDayClick(this.innerText,0)"></td>';

    strFrame+='        <td colspan=3 align=right Author=meizz><span onclick=parent.closeLayer() ';

    strFrame+='         Author=meizz title="' + _VersionInfo + '"><u>关闭</u></span>&nbsp;</td></tr>';

    strFrame+='    </table></td></tr><tr Author="wayx"><td Author="wayx">';

    strFrame+='        <table border=0 cellspacing=1 cellpadding=0 width=100% Author="wayx" bgcolor=#FFFFFF>';

    strFrame+='          <tr Author="wayx"><td Author=meizz align=left><input Author=meizz type=button <<" title="向前翻 1 年" onclick="parent.meizzPrevY()" ';

    strFrame+='             onfocus="this.blur()" ><input Author=meizz 向前翻 1 月" type=button ';

    strFrame+='             value="< " onclick="parent.meizzPrevM()" onfocus="this.blur()" ></td><td ';

    strFrame+='             Author=meizz align=center><input Author=meizz type=button parent.meizzToday()" ';

    strFrame+='             onfocus="this.blur()" title="当前日期" ></td><td ';

    strFrame+='             Author=meizz align=right><input Author=meizz type=button >" onclick="parent.meizzNextM()" ';

    strFrame+='             onfocus="this.blur()" title="向后翻 1 月" ;

    strFrame+='             Author=meizz type=button >>" title="向后翻 1 年" onclick="parent.meizzNextY()"';

    strFrame+='             onfocus="this.blur()" ></td>';

    strFrame+='</tr></table></td></tr></table></div>';

     

    window.frames.meizzDateLayer.document.writeln(strFrame);

    window.frames.meizzDateLayer.document.close();        //解决ie进度条不结束的问题

     

    //==================================================== WEB 页面显示部分 ======================================================

    var outObject;

    var outButton;          //点击的按钮

    var outDate="";         //存放对象的日期

    var odatelayer=window.frames.meizzDateLayer.document.all;         //存放日历对象

    function setday(tt,obj) //主调函数

    {

          if (arguments.length >  2){alert("对不起!传入本控件的参数太多!");return;}

          if (arguments.length == 0){alert("对不起!您没有传回本控件任何参数!");return;}

          var dads  = document.all.meizzDateLayer.style;

          var th = tt;

          var ttop  = tt.offsetTop;     //TT控件的定位点高

          var thei  = tt.clientHeight;  //TT控件本身的高

          var tleft = tt.offsetLeft;    //TT控件的定位点宽

          var ttyp  = tt.type;          //TT控件的类型

          while (tt = tt.offsetParent){ttop+=tt.offsetTop; tleft+=tt.offsetLeft;}

          dads.top  = (ttyp=="image")? ttop+thei : ttop+thei+6;

          dads.left = tleft;

          outObject = (arguments.length == 1) ? th : obj;

          outButton = (arguments.length == 1) ? null : th;      //设定外部点击的按钮

          //根据当前输入框的日期显示日历的年月

          var reg = /^(/d+)-(/d{1,2})-(/d{1,2})$/;

          var r = outObject.value.match(reg);

          if(r!=null){

                r[2]=r[2]-1;

                var d= new Date(r[1], r[2],r[3]);

                if(d.getFullYear()==r[1] && d.getMonth()==r[2] && d.getDate()==r[3]){

                      outDate=d;        //保存外部传入的日期

                }

                else outDate="";

                      meizzSetDay(r[1],r[2]+1);

          }

          else{

                outDate="";

                meizzSetDay(new Date().getFullYear(), new Date().getMonth() + 1);

          }

          dads.display = '';

     

          event.returnValue=false;

    }

     

    var MonHead = new Array(12);                 //定义阳历中每个月的最大天数

        MonHead[0] = 31; MonHead[1] = 28; MonHead[2] = 31; MonHead[3] = 30; MonHead[4]  = 31; MonHead[5]  = 30;

        MonHead[6] = 31; MonHead[7] = 31; MonHead[8] = 30; MonHead[9] = 31; MonHead[10] = 30; MonHead[11] = 31;

     

    var meizzTheYear=new Date().getFullYear(); //定义年的变量的初始值

    var meizzTheMonth=new Date().getMonth()+1; //定义月的变量的初始值

    var meizzWDay=new Array(39);               //定义写日期的数组

     

    function document.onclick() //任意点击时关闭该控件  //ie6的情况可以由下面的切换焦点处理代替

    {

      with(window.event)

      { if (srcElement.getAttribute("Author")==null && srcElement != outObject && srcElement != outButton)

        closeLayer();

      }

    }

     

    function document.onkeyup()         //按Esc键关闭,切换焦点关闭

      {

        if (window.event.keyCode==27){

                if(outObject)outObject.blur();

                closeLayer();

          }

          else if(document.activeElement)

                if(document.activeElement.getAttribute("Author")==null && document.activeElement != outObject && document.activeElement != outButton)

                {

                      closeLayer();

                }

      }

     

    function meizzWriteHead(yy,mm)  //往 head 中写入当前的年与月

      {

          odatelayer.meizzYearHead.innerText  = yy + " 年";

        odatelayer.meizzMonthHead.innerText = mm + " 月";

      }

     

    function tmpSelectYearInnerHTML(strYear) //年份的下拉框

    {

      if (strYear.match(//D/)!=null){alert("年份输入参数不是数字!");return;}

      var m = (strYear) ? strYear : new Date().getFullYear();

      if (m < 1000 || m > 9999) {alert("年份值不在 1000 到 9999 之间!");return;}

      var n = m - 10;

      if (n < 1000) n = 1000;

      if (n + 26 > 9999) n = 9974;

      var s = "<select Author=meizz name=tmpSelectYear "

         s += "onblur='document.all.tmpSelectYearLayer.style.display=/"none/"' "

         s += "onchange='document.all.tmpSelectYearLayer.style.display=/"none/";"

         s += "parent.meizzTheYear = this.value; parent.meizzSetDay(parent.meizzTheYear,parent.meizzTheMonth)'>/r/n";

      var selectInnerHTML = s;

      for (var i = n; i < n + 26; i++)

      {

        if (i == m)

           {selectInnerHTML += "<option Author=wayx value='" + i + "' selected>" + i + "年" + "</option>/r/n";}

        else {selectInnerHTML += "<option Author=wayx value='" + i + "'>" + i + "年" + "</option>/r/n";}

      }

      selectInnerHTML += "</select>";

      odatelayer.tmpSelectYearLayer.style.display="";

      odatelayer.tmpSelectYearLayer.innerHTML = selectInnerHTML;

      odatelayer.tmpSelectYear.focus();

    }

     

    function tmpSelectMonthInnerHTML(strMonth) //月份的下拉框

    {

      if (strMonth.match(//D/)!=null){alert("月份输入参数不是数字!");return;}

      var m = (strMonth) ? strMonth : new Date().getMonth() + 1;

      var s = "<select Author=meizz name=tmpSelectMonth "

         s += "onblur='document.all.tmpSelectMonthLayer.style.display=/"none/"' "

         s += "onchange='document.all.tmpSelectMonthLayer.style.display=/"none/";"

         s += "parent.meizzTheMonth = this.value; parent.meizzSetDay(parent.meizzTheYear,parent.meizzTheMonth)'>/r/n";

      var selectInnerHTML = s;

      for (var i = 1; i < 13; i++)

      {

        if (i == m)

           {selectInnerHTML += "<option Author=wayx value='"+i+"' selected>"+i+"月"+"</option>/r/n";}

        else {selectInnerHTML += "<option Author=wayx value='"+i+"'>"+i+"月"+"</option>/r/n";}

      }

      selectInnerHTML += "</select>";

      odatelayer.tmpSelectMonthLayer.style.display="";

      odatelayer.tmpSelectMonthLayer.innerHTML = selectInnerHTML;

      odatelayer.tmpSelectMonth.focus();

    }

     

    function closeLayer()               //这个层的关闭

      {

        document.all.meizzDateLayer.style.display="none";

      }

     

    function IsPinYear(year)            //判断是否闰平年

      {

        if (0==year%4&&((year%100!=0)||(year%400==0))) return true;else return false;

      }

     

    function GetMonthCount(year,month)  //闰年二月为29天

      {

        var c=MonHead[month-1];if((month==2)&&IsPinYear(year)) c++;return c;

      }

    function GetDOW(day,month,year)     //求某天的星期几

      {

        var dt=new Date(year,month-1,day).getDay()/7; return dt;

      }

     

    function meizzPrevY()  //往前翻 Year

      {

        if(meizzTheYear > 999 && meizzTheYear <10000){meizzTheYear--;}

        else{alert("年份超出范围(1000-9999)!");}

        meizzSetDay(meizzTheYear,meizzTheMonth);

      }

    function meizzNextY()  //往后翻 Year

      {

        if(meizzTheYear > 999 && meizzTheYear <10000){meizzTheYear++;}

        else{alert("年份超出范围(1000-9999)!");}

        meizzSetDay(meizzTheYear,meizzTheMonth);

      }

    function meizzToday()  //Today Button

      {

          var today;

        meizzTheYear = new Date().getFullYear();

        meizzTheMonth = new Date().getMonth()+1;

        today=new Date().getDate();

        //meizzSetDay(meizzTheYear,meizzTheMonth);

        if(outObject){

                outObject.value=meizzTheYear + "-" + meizzTheMonth + "-" + today;

        }

        closeLayer();

      }

    function meizzPrevM()  //往前翻月份

      {

        if(meizzTheMonth>1){meizzTheMonth--}else{meizzTheYear--;meizzTheMonth=12;}

        meizzSetDay(meizzTheYear,meizzTheMonth);

      }

    function meizzNextM()  //往后翻月份

      {

        if(meizzTheMonth==12){meizzTheYear++;meizzTheMonth=1}else{meizzTheMonth++}

        meizzSetDay(meizzTheYear,meizzTheMonth);

      }

     

    function meizzSetDay(yy,mm)   //主要的写程序**********

    {

      meizzWriteHead(yy,mm);

      //设置当前年月的公共变量为传入值

      meizzTheYear=yy;

      meizzTheMonth=mm;

     

      for (var i = 0; i < 39; i++){meizzWDay[i]=""};  //将显示框的内容全部清空

      var day1 = 1,day2=1,firstday = new Date(yy,mm-1,1).getDay();  //某月第一天的星期几

      for (i=0;i<firstday;i++)meizzWDay[i]=GetMonthCount(mm==1?yy-1:yy,mm==1?12:mm-1)-firstday+i+1  //上个月的最后几天

      for (i = firstday; day1 < GetMonthCount(yy,mm)+1; i++){meizzWDay[i]=day1;day1++;}

      for (i=firstday+GetMonthCount(yy,mm);i<39;i++){meizzWDay[i]=day2;day2++}

      for (i = 0; i < 39; i++)

      { var da = eval("odatelayer.meizzDay"+i)     //书写新的一个月的日期星期排列

        if (meizzWDay[i]!="")

          {

                //初始化边框

                da.borderColorLight="#FF9900";

                da.borderColorDark="#FFFFFF";

                if(i<firstday)          //上个月的部分

                {

                      da.innerHTML="<b><font color=gray>" + meizzWDay[i] + "</font></b>";

                      da.title=(mm==1?12:mm-1) +"月" + meizzWDay[i] + "日";

                      da.onclick=Function("meizzDayClick(this.innerText,-1)");

                      if(!outDate)

                            da.style.backgroundColor = ((mm==1?yy-1:yy) == new Date().getFullYear() &&

                                  (mm==1?12:mm-1) == new Date().getMonth()+1 && meizzWDay[i] == new Date().getDate()) ?

                                   "#FFD700":"#e0e0e0";

                      else

                      {

                            da.style.backgroundColor =((mm==1?yy-1:yy)==outDate.getFullYear() && (mm==1?12:mm-1)== outDate.getMonth() + 1 &&

                            meizzWDay[i]==outDate.getDate())? "#00ffff" :

                            (((mm==1?yy-1:yy) == new Date().getFullYear() && (mm==1?12:mm-1) == new Date().getMonth()+1 &&

                            meizzWDay[i] == new Date().getDate()) ? "#FFD700":"#e0e0e0");

                            //将选中的日期显示为凹下去

                            if((mm==1?yy-1:yy)==outDate.getFullYear() && (mm==1?12:mm-1)== outDate.getMonth() + 1 &&

                            meizzWDay[i]==outDate.getDate())

                            {

                                  da.borderColorLight="#FFFFFF";

                                  da.borderColorDark="#FF9900";

                            }

                      }

                }

                else if (i>=firstday+GetMonthCount(yy,mm))            //下个月的部分

                {

                      da.innerHTML="<b><font color=gray>" + meizzWDay[i] + "</font></b>";

                      da.title=(mm==12?1:mm+1) +"月" + meizzWDay[i] + "日";

                      da.onclick=Function("meizzDayClick(this.innerText,1)");

                      if(!outDate)

                            da.style.backgroundColor = ((mm==12?yy+1:yy) == new Date().getFullYear() &&

                                  (mm==12?1:mm+1) == new Date().getMonth()+1 && meizzWDay[i] == new Date().getDate()) ?

                                   "#FFD700":"#e0e0e0";

                      else

                      {

                            da.style.backgroundColor =((mm==12?yy+1:yy)==outDate.getFullYear() && (mm==12?1:mm+1)== outDate.getMonth() + 1 &&

                            meizzWDay[i]==outDate.getDate())? "#00ffff" :

                            (((mm==12?yy+1:yy) == new Date().getFullYear() && (mm==12?1:mm+1) == new Date().getMonth()+1 &&

                            meizzWDay[i] == new Date().getDate()) ? "#FFD700":"#e0e0e0");

                            //将选中的日期显示为凹下去

                            if((mm==12?yy+1:yy)==outDate.getFullYear() && (mm==12?1:mm+1)== outDate.getMonth() + 1 &&

                            meizzWDay[i]==outDate.getDate())

                            {

                                  da.borderColorLight="#FFFFFF";

                                  da.borderColorDark="#FF9900";

                            }

                      }

                }

                else        //本月的部分

                {

                      da.innerHTML="<b>" + meizzWDay[i] + "</b>";

                      da.title=mm +"月" + meizzWDay[i] + "日";

                      da.onclick=Function("meizzDayClick(this.innerText,0)");           //给td赋予onclick事件的处理

                      //如果是当前选择的日期,则显示亮蓝色的背景;如果是当前日期,则显示暗黄色背景

                      if(!outDate)

                            da.style.backgroundColor = (yy == new Date().getFullYear() && mm == new Date().getMonth()+1 && meizzWDay[i] == new Date().getDate())?

                                  "#FFD700":"#e0e0e0";

                      else

                      {

                            da.style.backgroundColor =(yy==outDate.getFullYear() && mm== outDate.getMonth() + 1 && meizzWDay[i]==outDate.getDate())?

                                  "#00ffff":((yy == new Date().getFullYear() && mm == new Date().getMonth()+1 && meizzWDay[i] == new Date().getDate())?

                                  "#FFD700":"#e0e0e0");

                            //将选中的日期显示为凹下去

                            if(yy==outDate.getFullYear() && mm== outDate.getMonth() + 1 && meizzWDay[i]==outDate.getDate())

                            {

                                  da.borderColorLight="#FFFFFF";

                                  da.borderColorDark="#FF9900";

                            }

                      }

                }

            da.style.cursor="hand"

          }

        else{da.innerHTML="";da.style.backgroundColor="";da.style.cursor="default"}

      }

    }

     

    function meizzDayClick(n,ex)  //点击显示框选取日期,主输入函数*************

    {

      var yy=meizzTheYear;

      var mm = parseInt(meizzTheMonth)+ex;    //ex表示偏移量,用于选择上个月份和下个月份的日期

          //判断月份,并进行对应的处理

          if(mm<1){

                yy--;

                mm=12+mm;

          }

          else if(mm>12){

                yy++;

                mm=mm-12;

          }

         

      if (mm < 10){mm = "0" + mm;}

      if (outObject)

      {

        if (!n) {//outObject.value="";

          return;}

        if ( n < 10){n = "0" + n;}

        outObject.value= yy + "-" + mm + "-" + n ; //注:在这里你可以输出改成你想要的格式

        closeLayer();

      }

      else {closeLayer(); alert("您所要输出的控件对象并不存在!");}

    }

     

    //----------------------------------------

    //  这是梅花雨做的一个日历 Javascript 页面脚本控件,适用于微软的 IE (5.0以上)浏览器

    //  主调用函数是 setday(this,[object])和setday(this),[object]是控件输出的控件名,举两个例子:

    //  一、<input name=txt><input type=button value=setday onclick="setday(this,document.all.txt)">

    //  二、<input onfocus="setday(this)">

    //  若有什么不足的地方,或者您有更好的建议,请与我联系:mail: meizz@hzcnc.com

    //  本日历的年份限制是(1000 - 9999)

    //  按ESC键关闭该控件

    //  在年和月的显示地方点击时会分别出年与月的下拉框

    //  控件外任意点击一点即可关闭该控件

    /* 以下为walkingpoison的修改说明

    walkingpoison联系方式:wayx@kali.com.cn

     

    Ver   2.0

    修改日期:2002-12-13

    修改内容:

    1.*全新修改使用iframe作为日历的载体,不再被select和flash等控件挡住。

    2.修正了移植到iframe后移动日历控件的问题。

     

    Ver   1.5

    修改日期:2002-12-4

    修改内容:

    1.选中的日期显示为凹下去的样式

    2.修改了关闭层的方法,使得失去焦点的时候能够关闭日历。

    3.修改按键处理,使得Tab切换焦点的时候可以关闭控件

    4.*可以自定义日历是否可以拖动

     

    Ver 1.4

    修改日期:2002-12-3

    修改内容:

    1.修正选中年/月份下拉框后按Esc键导致年/月份不显示的问题

    2.修正使用下拉框选择月份造成的日期错误(字符串转化为数字的问题)

    3.*外观样式的改进,使得控件从丑小鸭变成了美丽的天鹅,从灰姑娘变成了高贵的公主,从……(读者可以自己进行恰当的比喻)

    4.再次增大年/月份的点击空间,并对下拉框的位置稍作调整

     

    注:*号表示比较关键的改动

     

    说明:

    1.受到iframe的限制,如果拖动出日历窗口,则日历会停止移动。

    */

     

    //==================================================== 参数设定部分 =======================================================

    var bMoveable=true;           //设置日历是否可以拖动

    var _VersionInfo="Version:2.0&#13;2.0作者:walkingpoison&#13;1.0作者: F.R.Huang(meizz)&#13;MAIL: meizz@hzcnc.com"    //版本信息

     

    //==================================================== WEB 页面显示部分 =====================================================

    var strFrame;           //存放日历层的HTML代码

    document.writeln('<iframe id=meizzDateLayer Author=wayx frameborder=0 ></iframe>');

    strFrame='<style>';

    strFrame+='INPUT.button{BORDER-RIGHT: #ff9900 1px solid;BORDER-TOP: #ff9900 1px solid;BORDER-LEFT: #ff9900 1px solid;';

    strFrame+='BORDER-BOTTOM: #ff9900 1px solid;BACKGROUND-COLOR: #fff8ec;font-family:宋体;}';

    strFrame+='TD{FONT-SIZE: 9pt;font-family:宋体;}';

    strFrame+='</style>';

    strFrame+='<scr' + 'ipt>';

    strFrame+='var datelayerx,datelayery;     /*存放日历控件的鼠标位置*/';

    strFrame+='var bDrag;   /*标记是否开始拖动*/';

    strFrame+='function document.onmousemove()      /*在鼠标移动事件中,如果开始拖动日历,则移动日历*/';

    strFrame+='{if(bDrag && window.event.button==1)';

    strFrame+=' {var DateLayer=parent.document.all.meizzDateLayer.style;';

    strFrame+='       DateLayer.posLeft += window.event.clientX-datelayerx;/*由于每次移动以后鼠标位置都恢复为初始的位置,因此写法与div中不同*/';

    strFrame+='       DateLayer.posTop += window.event.clientY-datelayery;}}';

    strFrame+='function DragStart()           /*开始日历拖动*/';

    strFrame+='{var DateLayer=parent.document.all.meizzDateLayer.style;';

    strFrame+=' datelayerx=window.event.clientX;';

    strFrame+=' datelayery=window.event.clientY;';

    strFrame+=' bDrag=true;}';

    strFrame+='function DragEnd(){            /*结束日历拖动*/';

    strFrame+=' bDrag=false;}';

    strFrame+='</scr' + 'ipt>';

    strFrame+='<div onselectstart="return false"><span id=tmpSelectYearLayer Author=wayx ></span>';

    strFrame+='<span id=tmpSelectMonthLayer Author=wayx ></span>';

    strFrame+='<table border=1 cellspacing=0 cellpadding=0 width=142 height=160 bordercolor=#ff9900 bgcolor=#ff9900 Author="wayx">';

    strFrame+='  <tr Author="wayx"><td width=142 height=23 Author="wayx" bgcolor=#FFFFFF><table border=0 cellspacing=1 cellpadding=0 width=140 Author="wayx" height=23>';

    strFrame+='      <tr align=center Author="wayx"><td width=16 align=center bgcolor=#ff9900 ';

    strFrame+='        onclick="parent.meizzPrevM()" title="向前翻 1 月" Author=meizz><b Author=meizz>&lt;</b>';

    strFrame+='        </td><td width=60 align=center Author=meizz ';

    strFrame+='onmouseover="style.backgroundColor=/'#FFD700/'" onmouseout="style.backgroundColor=/'white/'" ';

    strFrame+='onclick="parent.tmpSelectYearInnerHTML(this.innerText.substring(0,4))" title="点击这里选择年份"><span Author=meizz id=meizzYearHead></span></td>';

    strFrame+='<td width=48 align=center Author=meizz onmouseover="style.backgroundColor=/'#FFD700/'" ';

    strFrame+=' onmouseout="style.backgroundColor=/'white/'" onclick="parent.tmpSelectMonthInnerHTML(this.innerText.length==3?this.innerText.substring(0,1):this.innerText.substring(0,2))"';

    strFrame+='        title="点击这里选择月份"><span id=meizzMonthHead Author=meizz></span></td>';

    strFrame+='        <td width=16 bgcolor=#ff9900 align=center ';

    strFrame+='         onclick="parent.meizzNextM()" title="向后翻 1 月" Author=meizz><b Author=meizz>&gt;</b></td></tr>';

    strFrame+='    </table></td></tr>';

    strFrame+='  <tr Author="wayx"><td width=142 height=18 Author="wayx">';

    strFrame+='<table border=1 cellspacing=0 cellpadding=0 bgcolor=#ff9900 ' + (bMoveable? 'onmousedown="DragStart()" onmouseup="DragEnd()"':'');

    strFrame+=' BORDERCOLORLIGHT=#FF9900 BORDERCOLORDARK=#FFFFFF width=140 height=20 Author="wayx" + (bMoveable ? 'move':'default') + '">';

    strFrame+='<tr Author="wayx" align=center valign=bottom><td Author=meizz>日</td>';

    strFrame+='<td Author=meizz>一</td><td Author=meizz>二</td>';

    strFrame+='<td Author=meizz>三</td><td Author=meizz>四</td>';

    strFrame+='<td Author=meizz>五</td><td Author=meizz>六</td></tr>';

    strFrame+='</table></td></tr><!-- Author:F.R.Huang(meizz) http://www.meizz.com/ mail: meizz@hzcnc.com 2002-10-8 -->';

    strFrame+='  <tr Author="wayx"><td width=142 height=120 Author="wayx">';

    strFrame+='    <table border=1 cellspacing=2 cellpadding=0 BORDERCOLORLIGHT=#FF9900 BORDERCOLORDARK=#FFFFFF bgcolor=#fff8ec width=140 height=120 Author="wayx">';

    var n=0; for (j=0;j<5;j++){ strFrame+= ' <tr align=center Author="wayx">'; for (i=0;i<7;i++){

    strFrame+='<td width=20 height=20 id=meizzDay'+n+' Author=meizz onclick=parent.meizzDayClick(this.innerText,0)></td>';n++;}

    strFrame+='</tr>';}

    strFrame+='      <tr align=center Author="wayx">';

    for (i=35;i<39;i++)strFrame+='<td width=20 height=20 id=meizzDay'+i+' Author=wayx onclick="parent.meizzDayClick(this.innerText,0)"></td>';

    strFrame+='        <td colspan=3 align=right Author=meizz><span onclick=parent.closeLayer() ';

    strFrame+='         Author=meizz title="' + _VersionInfo + '"><u>关闭</u></span>&nbsp;</td></tr>';

    strFrame+='    </table></td></tr><tr Author="wayx"><td Author="wayx">';

    strFrame+='        <table border=0 cellspacing=1 cellpadding=0 width=100% Author="wayx" bgcolor=#FFFFFF>';

    strFrame+='          <tr Author="wayx"><td Author=meizz align=left><input Author=meizz type=button <<" title="向前翻 1 年" onclick="parent.meizzPrevY()" ';

    strFrame+='             onfocus="this.blur()" ><input Author=meizz 向前翻 1 月" type=button ';

    strFrame+='             value="< " onclick="parent.meizzPrevM()" onfocus="this.blur()" ></td><td ';

    strFrame+='             Author=meizz align=center><input Author=meizz type=button parent.meizzToday()" ';

    strFrame+='             onfocus="this.blur()" title="当前日期" ></td><td ';

    strFrame+='             Author=meizz align=right><input Author=meizz type=button >" onclick="parent.meizzNextM()" ';

    strFrame+='             onfocus="this.blur()" title="向后翻 1 月" ;

    strFrame+='             Author=meizz type=button >>" title="向后翻 1 年" onclick="parent.meizzNextY()"';

    strFrame+='             onfocus="this.blur()" ></td>';

    strFrame+='</tr></table></td></tr></table></div>';

     

    window.frames.meizzDateLayer.document.writeln(strFrame);

    window.frames.meizzDateLayer.document.close();        //解决ie进度条不结束的问题

     

    //==================================================== WEB 页面显示部分 ======================================================

    var outObject;

    var outButton;          //点击的按钮

    var outDate="";         //存放对象的日期

    var odatelayer=window.frames.meizzDateLayer.document.all;         //存放日历对象

    function setday(tt,obj) //主调函数

    {

          if (arguments.length >  2){alert("对不起!传入本控件的参数太多!");return;}

          if (arguments.length == 0){alert("对不起!您没有传回本控件任何参数!");return;}

          var dads  = document.all.meizzDateLayer.style;

          var th = tt;

          var ttop  = tt.offsetTop;     //TT控件的定位点高

          var thei  = tt.clientHeight;  //TT控件本身的高

          var tleft = tt.offsetLeft;    //TT控件的定位点宽

          var ttyp  = tt.type;          //TT控件的类型

          while (tt = tt.offsetParent){ttop+=tt.offsetTop; tleft+=tt.offsetLeft;}

          dads.top  = (ttyp=="image")? ttop+thei : ttop+thei+6;

          dads.left = tleft;

          outObject = (arguments.length == 1) ? th : obj;

          outButton = (arguments.length == 1) ? null : th;      //设定外部点击的按钮

          //根据当前输入框的日期显示日历的年月

          var reg = /^(/d+)-(/d{1,2})-(/d{1,2})$/;

          var r = outObject.value.match(reg);

          if(r!=null){

                r[2]=r[2]-1;

                var d= new Date(r[1], r[2],r[3]);

                if(d.getFullYear()==r[1] && d.getMonth()==r[2] && d.getDate()==r[3]){

                      outDate=d;        //保存外部传入的日期

                }

                else outDate="";

                      meizzSetDay(r[1],r[2]+1);

          }

          else{

                outDate="";

                meizzSetDay(new Date().getFullYear(), new Date().getMonth() + 1);

          }

          dads.display = '';

     

          event.returnValue=false;

    }

     

    var MonHead = new Array(12);                 //定义阳历中每个月的最大天数

        MonHead[0] = 31; MonHead[1] = 28; MonHead[2] = 31; MonHead[3] = 30; MonHead[4]  = 31; MonHead[5]  = 30;

        MonHead[6] = 31; MonHead[7] = 31; MonHead[8] = 30; MonHead[9] = 31; MonHead[10] = 30; MonHead[11] = 31;

     

    var meizzTheYear=new Date().getFullYear(); //定义年的变量的初始值

    var meizzTheMonth=new Date().getMonth()+1; //定义月的变量的初始值

    var meizzWDay=new Array(39);               //定义写日期的数组

     

    function document.onclick() //任意点击时关闭该控件  //ie6的情况可以由下面的切换焦点处理代替

    {

      with(window.event)

      { if (srcElement.getAttribute("Author")==null && srcElement != outObject && srcElement != outButton)

        closeLayer();

      }

    }

     

    function document.onkeyup()         //按Esc键关闭,切换焦点关闭

      {

        if (window.event.keyCode==27){

                if(outObject)outObject.blur();

                closeLayer();

          }

          else if(document.activeElement)

                if(document.activeElement.getAttribute("Author")==null && document.activeElement != outObject && document.activeElement != outButton)

                {

                      closeLayer();

                }

      }

     

    function meizzWriteHead(yy,mm)  //往 head 中写入当前的年与月

      {

          odatelayer.meizzYearHead.innerText  = yy + " 年";

        odatelayer.meizzMonthHead.innerText = mm + " 月";

      }

     

    function tmpSelectYearInnerHTML(strYear) //年份的下拉框

    {

      if (strYear.match(//D/)!=null){alert("年份输入参数不是数字!");return;}

      var m = (strYear) ? strYear : new Date().getFullYear();

      if (m < 1000 || m > 9999) {alert("年份值不在 1000 到 9999 之间!");return;}

      var n = m - 10;

      if (n < 1000) n = 1000;

      if (n + 26 > 9999) n = 9974;

      var s = "<select Author=meizz name=tmpSelectYear "

         s += "onblur='document.all.tmpSelectYearLayer.style.display=/"none/"' "

         s += "onchange='document.all.tmpSelectYearLayer.style.display=/"none/";"

         s += "parent.meizzTheYear = this.value; parent.meizzSetDay(parent.meizzTheYear,parent.meizzTheMonth)'>/r/n";

      var selectInnerHTML = s;

      for (var i = n; i < n + 26; i++)

      {

        if (i == m)

           {selectInnerHTML += "<option Author=wayx value='" + i + "' selected>" + i + "年" + "</option>/r/n";}

        else {selectInnerHTML += "<option Author=wayx value='" + i + "'>" + i + "年" + "</option>/r/n";}

      }

      selectInnerHTML += "</select>";

      odatelayer.tmpSelectYearLayer.style.display="";

      odatelayer.tmpSelectYearLayer.innerHTML = selectInnerHTML;

      odatelayer.tmpSelectYear.focus();

    }

     

    function tmpSelectMonthInnerHTML(strMonth) //月份的下拉框

    {

      if (strMonth.match(//D/)!=null){alert("月份输入参数不是数字!");return;}

      var m = (strMonth) ? strMonth : new Date().getMonth() + 1;

      var s = "<select Author=meizz name=tmpSelectMonth "

         s += "onblur='document.all.tmpSelectMonthLayer.style.display=/"none/"' "

         s += "onchange='document.all.tmpSelectMonthLayer.style.display=/"none/";"

         s += "parent.meizzTheMonth = this.value; parent.meizzSetDay(parent.meizzTheYear,parent.meizzTheMonth)'>/r/n";

      var selectInnerHTML = s;

      for (var i = 1; i < 13; i++)

      {

        if (i == m)

           {selectInnerHTML += "<option Author=wayx value='"+i+"' selected>"+i+"月"+"</option>/r/n";}

        else {selectInnerHTML += "<option Author=wayx value='"+i+"'>"+i+"月"+"</option>/r/n";}

      }

      selectInnerHTML += "</select>";

      odatelayer.tmpSelectMonthLayer.style.display="";

      odatelayer.tmpSelectMonthLayer.innerHTML = selectInnerHTML;

      odatelayer.tmpSelectMonth.focus();

    }

     

    function closeLayer()               //这个层的关闭

      {

        document.all.meizzDateLayer.style.display="none";

      }

     

    function IsPinYear(year)            //判断是否闰平年

      {

        if (0==year%4&&((year%100!=0)||(year%400==0))) return true;else return false;

      }

     

    function GetMonthCount(year,month)  //闰年二月为29天

      {

        var c=MonHead[month-1];if((month==2)&&IsPinYear(year)) c++;return c;

      }

    function GetDOW(day,month,year)     //求某天的星期几

      {

        var dt=new Date(year,month-1,day).getDay()/7; return dt;

      }

     

    function meizzPrevY()  //往前翻 Year

      {

        if(meizzTheYear > 999 && meizzTheYear <10000){meizzTheYear--;}

        else{alert("年份超出范围(1000-9999)!");}

        meizzSetDay(meizzTheYear,meizzTheMonth);

      }

    function meizzNextY()  //往后翻 Year

      {

        if(meizzTheYear > 999 && meizzTheYear <10000){meizzTheYear++;}

        else{alert("年份超出范围(1000-9999)!");}

        meizzSetDay(meizzTheYear,meizzTheMonth);

      }

    function meizzToday()  //Today Button

      {

          var today;

        meizzTheYear = new Date().getFullYear();

        meizzTheMonth = new Date().getMonth()+1;

        today=new Date().getDate();

        //meizzSetDay(meizzTheYear,meizzTheMonth);

        if(outObject){

                outObject.value=meizzTheYear + "-" + meizzTheMonth + "-" + today;

        }

        closeLayer();

      }

    function meizzPrevM()  //往前翻月份

      {

        if(meizzTheMonth>1){meizzTheMonth--}else{meizzTheYear--;meizzTheMonth=12;}

        meizzSetDay(meizzTheYear,meizzTheMonth);

      }

    function meizzNextM()  //往后翻月份

      {

        if(meizzTheMonth==12){meizzTheYear++;meizzTheMonth=1}else{meizzTheMonth++}

        meizzSetDay(meizzTheYear,meizzTheMonth);

      }

     

    function meizzSetDay(yy,mm)   //主要的写程序**********

    {

      meizzWriteHead(yy,mm);

      //设置当前年月的公共变量为传入值

      meizzTheYear=yy;

      meizzTheMonth=mm;

     

      for (var i = 0; i < 39; i++){meizzWDay[i]=""};  //将显示框的内容全部清空

      var day1 = 1,day2=1,firstday = new Date(yy,mm-1,1).getDay();  //某月第一天的星期几

      for (i=0;i<firstday;i++)meizzWDay[i]=GetMonthCount(mm==1?yy-1:yy,mm==1?12:mm-1)-firstday+i+1  //上个月的最后几天

      for (i = firstday; day1 < GetMonthCount(yy,mm)+1; i++){meizzWDay[i]=day1;day1++;}

      for (i=firstday+GetMonthCount(yy,mm);i<39;i++){meizzWDay[i]=day2;day2++}

      for (i = 0; i < 39; i++)

      { var da = eval("odatelayer.meizzDay"+i)     //书写新的一个月的日期星期排列

        if (meizzWDay[i]!="")

          {

                //初始化边框

                da.borderColorLight="#FF9900";

                da.borderColorDark="#FFFFFF";

                if(i<firstday)          //上个月的部分

                {

                      da.innerHTML="<b><font color=gray>" + meizzWDay[i] + "</font></b>";

                      da.title=(mm==1?12:mm-1) +"月" + meizzWDay[i] + "日";

                      da.onclick=Function("meizzDayClick(this.innerText,-1)");

                      if(!outDate)

                            da.style.backgroundColor = ((mm==1?yy-1:yy) == new Date().getFullYear() &&

                                  (mm==1?12:mm-1) == new Date().getMonth()+1 && meizzWDay[i] == new Date().getDate()) ?

                                   "#FFD700":"#e0e0e0";

                      else

                      {

                            da.style.backgroundColor =((mm==1?yy-1:yy)==outDate.getFullYear() && (mm==1?12:mm-1)== outDate.getMonth() + 1 &&

                            meizzWDay[i]==outDate.getDate())? "#00ffff" :

                            (((mm==1?yy-1:yy) == new Date().getFullYear() && (mm==1?12:mm-1) == new Date().getMonth()+1 &&

                            meizzWDay[i] == new Date().getDate()) ? "#FFD700":"#e0e0e0");

                            //将选中的日期显示为凹下去

                            if((mm==1?yy-1:yy)==outDate.getFullYear() && (mm==1?12:mm-1)== outDate.getMonth() + 1 &&

                            meizzWDay[i]==outDate.getDate())

                            {

                                  da.borderColorLight="#FFFFFF";

                                  da.borderColorDark="#FF9900";

                            }

                      }

                }

                else if (i>=firstday+GetMonthCount(yy,mm))            //下个月的部分

                {

                      da.innerHTML="<b><font color=gray>" + meizzWDay[i] + "</font></b>";

                      da.title=(mm==12?1:mm+1) +"月" + meizzWDay[i] + "日";

                      da.onclick=Function("meizzDayClick(this.innerText,1)");

                      if(!outDate)

                            da.style.backgroundColor = ((mm==12?yy+1:yy) == new Date().getFullYear() &&

                                  (mm==12?1:mm+1) == new Date().getMonth()+1 && meizzWDay[i] == new Date().getDate()) ?

                                   "#FFD700":"#e0e0e0";

                      else

                      {

                            da.style.backgroundColor =((mm==12?yy+1:yy)==outDate.getFullYear() && (mm==12?1:mm+1)== outDate.getMonth() + 1 &&

                            meizzWDay[i]==outDate.getDate())? "#00ffff" :

                            (((mm==12?yy+1:yy) == new Date().getFullYear() && (mm==12?1:mm+1) == new Date().getMonth()+1 &&

                            meizzWDay[i] == new Date().getDate()) ? "#FFD700":"#e0e0e0");

                            //将选中的日期显示为凹下去

                            if((mm==12?yy+1:yy)==outDate.getFullYear() && (mm==12?1:mm+1)== outDate.getMonth() + 1 &&

                            meizzWDay[i]==outDate.getDate())

                            {

                                  da.borderColorLight="#FFFFFF";

                                  da.borderColorDark="#FF9900";

                            }

                      }

                }

                else        //本月的部分

                {

                      da.innerHTML="<b>" + meizzWDay[i] + "</b>";

                      da.title=mm +"月" + meizzWDay[i] + "日";

                      da.onclick=Function("meizzDayClick(this.innerText,0)");           //给td赋予onclick事件的处理

                      //如果是当前选择的日期,则显示亮蓝色的背景;如果是当前日期,则显示暗黄色背景

                      if(!outDate)

                            da.style.backgroundColor = (yy == new Date().getFullYear() && mm == new Date().getMonth()+1 && meizzWDay[i] == new Date().getDate())?

                                  "#FFD700":"#e0e0e0";

                      else

                      {

                            da.style.backgroundColor =(yy==outDate.getFullYear() && mm== outDate.getMonth() + 1 && meizzWDay[i]==outDate.getDate())?

                                  "#00ffff":((yy == new Date().getFullYear() && mm == new Date().getMonth()+1 && meizzWDay[i] == new Date().getDate())?

                                  "#FFD700":"#e0e0e0");

                            //将选中的日期显示为凹下去

                            if(yy==outDate.getFullYear() && mm== outDate.getMonth() + 1 && meizzWDay[i]==outDate.getDate())

                            {

                                  da.borderColorLight="#FFFFFF";

                                  da.borderColorDark="#FF9900";

                            }

                      }

                }

            da.style.cursor="hand"

          }

        else{da.innerHTML="";da.style.backgroundColor="";da.style.cursor="default"}

      }

    }

     

    function meizzDayClick(n,ex)  //点击显示框选取日期,主输入函数*************

    {

      var yy=meizzTheYear;

      var mm = parseInt(meizzTheMonth)+ex;    //ex表示偏移量,用于选择上个月份和下个月份的日期

          //判断月份,并进行对应的处理

          if(mm<1){

                yy--;

                mm=12+mm;

          }

          else if(mm>12){

                yy++;

                mm=mm-12;

          }

         

      if (mm < 10){mm = "0" + mm;}

      if (outObject)

      {

        if (!n) {//outObject.value="";

          return;}

        if ( n < 10){n = "0" + n;}

        outObject.value= yy + "-" + mm + "-" + n ; //注:在这里你可以输出改成你想要的格式

        closeLayer();

      }

      else {closeLayer(); alert("您所要输出的控件对象并不存在!");}

    }


        
    [3] Objective-C会合 (一)——NSString
        来源: 互联网  发布时间: 2014-02-18
    Objective-C集合 (一)——NSString

     

     

    Cocoa由两个框架组成:FoundationKit和ApplicationKit。
    ApplicationKit:存放了所有的用户接口对象和高级类
    FoundationKit:有许多实用的面向数据的低级类和数据类型。
    此框架存放在:/Developer/ADC Reference Libraty/documentaion/index.html中
    1.示例代码:
    import <Foundation/Foundation.h>
    int main(int argc,const char *argv[]){
            NSAutorealeasePool * pool =[[NSAutorealeasePool alloc] init];
            //insert your code here
             NSLog(@"Hello ,World");
             [pool drain];//释放内存
             return 0;
    }
     
    2.字符串
    (1)创建字符串
    /*备注:a.+:代表此方法属于类方法,属于类对象(而不是属于类的实例对象)并且通常用于创建新的实例,也称工厂方法。
    根据传递的参数创建新对象
    类方法也可以访问全局数据,
    比如AppKit中NSColor类有一些以不同颜色命名的类方法,redColor和blueColor,可以这样写
     NSColor *haveBlueColor = [NSColor blueColor];
      b. 省略号:表示接收多个以逗号隔开的其他参数*/
    + (id)stringWithFormat: (NSString *) format,... ;
    NSString *height;
    height = [NSString stringWithFormat: @"Your height is %d feet, %d inches", 5, 11];
     
    (2)字符串长度
    - (unsigned int) length;
    unsigned int length = [height length];
     
    (3)比较字符串:
    - (Bool) isEqualToString: (NSString *) aString;
     
    (4)是否区分大小写的比较
    /*备注:options是位掩码,可以使用位运算符(|)来添加选项标记
    常用选项:NSCaseInsensitiveSearch :不区分大小写字符
    NSLiteralSearch:区分大小写比较
    NSNumericSearch:比较字符串的个数而不是字符值。*/
    - (NSComparisonResult) compare: (NSString *) string
                                            options:(unsigned)mask
     
    例子:比较字符串,忽略大小写但按字符个数的多少正确排序
    if([thing1 compare thing2
                      options: NSCaseInsensitiveSearch | NSNumericSearch]
                  == NSOrderedSame){
                    NSLog(@"They match");
    }
     
    (5)字符串是否包含别的字符串
    //以另一个字符串开头
    - (Bool) hasPrefix: (NSString *) aString;
    //以另一个字符串结尾
    - (Bool) hasSuffix: (NSString *) aString;
    //是否包含其他字符
    - (NSRange) rangeOfString: (NSString *) aString;
     
    (6)可变性
    类似于StringBuffer ,Cocoa提供了NSString的子类,叫NSMutableString.

        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3