国产精品97,五月天久久网站,亚洲国产精品视频一区http://www.aygfsteel.com/WshmAndLily/category/9417.htmlzh-cnFri, 17 Jun 2011 22:14:42 GMTFri, 17 Jun 2011 22:14:42 GMT60兼容IE8、火狐的本地圖片預(yù)覽+等比例縮放http://www.aygfsteel.com/WshmAndLily/articles/352454.htmlsemovysemovyThu, 16 Jun 2011 10:13:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/352454.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/352454.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/352454.html#Feedback0http://www.aygfsteel.com/WshmAndLily/comments/commentRss/352454.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/352454.html轉(zhuǎn)自http://it.oyksoft.com/post/974/


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">    
<html xmlns="http://www.w3.org/1999/xhtml">    
<head>    
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    
<title>Firefox3,IE6,IE7,IE8上傳圖片預(yù)覽</title>    
<style type="text/css">    
#preview_wrapper{     
    display:inline-block;     
    width:300px;     
    height:300px;     
    background-color:#CCC;     
}     
#preview_fake{ /* 該對象用戶在IE下顯示預(yù)覽圖片 */     
    filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);     
}     
#preview_size_fake{ /* 該對象只用來在IE下獲得圖片的原始尺寸,無其它用途 */     
    filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image);       
    visibility:hidden;     
}     
#preview{ /* 該對象用戶在FF下顯示預(yù)覽圖片 */     
    width:300px;     
    height:300px;     
}     
</style>    
    
<script type="text/javascript">    
function onUploadImgChange(sender){     
    if( !sender.value.match( /.jpg|.gif|.png|.bmp/i ) ){     
        alert('圖片格式無效!');     
        return false;     
    }     
         
    var objPreview = document.getElementById( 'preview' );     
    var objPreviewFake = document.getElementById( 'preview_fake' );     
    var objPreviewSizeFake = document.getElementById( 'preview_size_fake' );     
         
    if( sender.files &&  sender.files[0] ){     
        objPreview.style.display = 'block';     
        objPreview.style.width = 'auto';     
        objPreview.style.height = 'auto';     
             
        // Firefox 因安全性問題已無法直接通過 input[file].value 獲取完整的文件路徑     
        objPreview.src = sender.files[0].getAsDataURL();         
    }else if( objPreviewFake.filters ){      
        // IE7,IE8 在設(shè)置本地圖片地址為 img.src 時出現(xiàn)莫名其妙的后果     
        //(相同環(huán)境有時能顯示,有時不顯示),因此只能用濾鏡來解決     
             
        // IE7, IE8因安全性問題已無法直接通過 input[file].value 獲取完整的文件路徑     
        sender.select();     
        var imgSrc = document.selection.createRange().text;     
             
        objPreviewFake.filters.item(     
            'DXImageTransform.Microsoft.AlphaImageLoader').src = imgSrc;     
        objPreviewSizeFake.filters.item(     
            'DXImageTransform.Microsoft.AlphaImageLoader').src = imgSrc;     
             
        autoSizePreview( objPreviewFake,      
            objPreviewSizeFake.offsetWidth, objPreviewSizeFake.offsetHeight );     
        objPreview.style.display = 'none';     
    }     
}     
    
function onPreviewLoad(sender){     
    autoSizePreview( sender, sender.offsetWidth, sender.offsetHeight );     
}     
    
function autoSizePreview( objPre, originalWidth, originalHeight ){     
    var zoomParam = clacImgZoomParam( 300, 300, originalWidth, originalHeight );     
    objPre.style.width = zoomParam.width + 'px';     
    objPre.style.height = zoomParam.height + 'px';     
    objPre.style.marginTop = zoomParam.top + 'px';     
    objPre.style.marginLeft = zoomParam.left + 'px';     
}     
    
function clacImgZoomParam( maxWidth, maxHeight, width, height ){     
    var param = { width:width, height:height, top:0, left:0 };     
         
    if( width>maxWidth || height>maxHeight ){     
        rateWidth = width / maxWidth;     
        rateHeight = height / maxHeight;     
             
        if( rateWidth > rateHeight ){     
            param.width =  maxWidth;     
            param.height = height / rateWidth;     
        }else{     
            param.width = width / rateHeight;     
            param.height = maxHeight;     
        }     
    }     
         
    param.left = (maxWidth - param.width) / 2;     
    param.top = (maxHeight - param.height) / 2;     
         
    return param;     
}     
</script>    
    
</head>    
    
<body>    
    <div id="preview_wrapper">    
        <div id="preview_fake">    
            <img id="preview" onload="onPreviewLoad(this)"/>    
        </div>    
    </div>    
    <br/>    
    <input id="upload_img" type="file" onchange="onUploadImgChange(this)"/>    
    <br/>    
    <img id="preview_size_fake"/>    
</body>    
</html>

semovy 2011-06-16 18:13 發(fā)表評論
]]>
Javascript 方法大全http://www.aygfsteel.com/WshmAndLily/articles/238335.htmlsemovysemovyMon, 03 Nov 2008 06:33:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/238335.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/238335.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/238335.html#Feedback0http://www.aygfsteel.com/WshmAndLily/comments/commentRss/238335.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/238335.html閱讀全文

semovy 2008-11-03 14:33 發(fā)表評論
]]>
JAVASCRIPT校驗大全http://www.aygfsteel.com/WshmAndLily/articles/238334.htmlsemovysemovyMon, 03 Nov 2008 06:28:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/238334.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/238334.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/238334.html#Feedback0http://www.aygfsteel.com/WshmAndLily/comments/commentRss/238334.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/238334.html閱讀全文

semovy 2008-11-03 14:28 發(fā)表評論
]]>
調(diào)用qq的方法http://www.aygfsteel.com/WshmAndLily/articles/237519.htmlsemovysemovyThu, 30 Oct 2008 01:08:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/237519.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/237519.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/237519.html#Feedback0http://www.aygfsteel.com/WshmAndLily/comments/commentRss/237519.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/237519.html

調(diào)用qq的方法:
<A href="tencent://message/?uin=20989163&Site=博客園&Menu=yes"
target=blank><IMG alt=點(diǎn)擊這里給我發(fā)消息 src="http://wpa.qq.com/pa?p=1:20989163:11"
border=0></A>

調(diào)用msn的方法:
<A href="msnim:chat?contact=xxqq0824@hotmail.com" target=blank>點(diǎn)這里和我MSN聊天</A>

放在頁面上就能出效果了!



1.如何在網(wǎng)頁上顯示騰訊QQ在線洽談?

QQ在線咨詢代碼(qq在線交談代碼/qq在線客服代碼/qq在線狀態(tài)代碼/qq在線客服代碼)
(將123456換成你的號碼,site后面換成你的網(wǎng)站就可以了)

  1. <a target="blank" href="http://wpa.qq.com/msgrd?V=1&Uin=12345678&Site=精品空間論壇& Menu=yes"><img border="0" SRC=http://wpa.qq.com/pa?p=1:12345678:6 alt="點(diǎn)擊這里給我發(fā)消息" align="absmiddle"></a>

更多的生成顯示QQ在線狀態(tài)的代碼,請查看騰訊官方網(wǎng)站
http://imis.qq.com/webpresence/code.shtml
你只需要填寫你的號碼,網(wǎng)站名稱以及提示就可以點(diǎn)擊生成就可以生成QQ在線狀態(tài)的代碼,拷貝生成的代碼加入網(wǎng)頁即可

2.阿里巴巴貿(mào)易通在線狀態(tài)代碼生成,eric改成你的ID就行了,還有ALT改成你的內(nèi)容

  1. <a target=_blank ><img _fcksavedurl=""http://scs1.sh1.china.alibaba.com/msg.atc?v=1&uid=mengsajewel"><img" border=0 src="http://scs1.sh1.china.alibaba.com/online.atc?v=1&uid=eric&s=2" alt="精品空間論壇 eric" align="absmiddle"></a>

更多的阿里巴巴貿(mào)易通在線狀態(tài)代碼生成樣式,請查看阿里巴巴官方網(wǎng)站
http://club.china.alibaba.com/club/block/alitalk/alitalkfire.html


3.skype在線狀態(tài)代碼生成
將eric換成你的skype ID就可以了,需要在skype個人賬戶里設(shè)置對任何人顯示狀態(tài)

  1. <a href="skype:eric?call" _fcksavedurl=""skype:venky1979?call"" on-click="return skypeCheck();"><img src=http://mystatus.skype.com/smallclassic/eric style="border: none;" alt="Call me!" /></a>

更多的skype在線狀態(tài)代碼生成樣式,請查看skype的官方網(wǎng)站
http://www.skype.com/share/buttons/

4.如何生成MSN在線狀態(tài)代碼
可以設(shè)置自定義顯示圖片,不過檢測速度有點(diǎn)慢,另外一部分人在msn的配置中,設(shè)置了不加好友就不顯示在線。這是為了個人隱私保護(hù),但這樣會顯示狀態(tài)未知或者離線。如果你不介意別人看到你,就開啟那個選項就好了。

  1. <!--MSN即時交談代碼開始 -->
  2.     <Script language=javascript>
  3.     function SendMSNMessage(name)
  4.     {
  5.     //Send a message through MSN , only for IE
  6.     //and you must have installed MSN or Window Message
  7.     MsgrObj.InstantMessage(name);
  8.     }
  9.     function AddMSNContact(name)
  10.     {
  11.     //Add a people to MSN , only for IE
  12.     //and you must have installed MSN or Window Message
  13.     MsgrObj.AddContact(0, name);
  14.     }
  15.     </script>
  16.     <object id="MsgrObj" classid="clsid:B69003B3-C55E-4B48-836C-BC5946FC3B28"
  17.     codetype="application/x-
  18.     oleobject" width="0" height="0"></object>
  19.     <input type=image src="images/MSN.gif" alt="在線MSN交流" onClick="SendMSNMessage
  20.     ('[email]meskyes@hotmail.com[/email]')" />
  21.     <!--MSN在線交談代碼結(jié)束 -->

6:雅虎

將admin@hichf.com換成您自己的:

  1. <a target="_blank"><img src="http://opium3.msg.vip.mud.yahoo.com/online?u=admin@hichf.com&t=1&l=cn" alt="在網(wǎng)頁上就能直接與我們交談!" width=82 height=22 hspace="5" border="0" align="absmiddle" /></a>

7.在線客服的代碼

有很多朋友問我在線客服的代碼,貌似網(wǎng)上也找不到好用的,因此打算把自己珍藏的代碼拿出來給大家分性享一下,很好用。

按鈕部分,我是用圖片來做例子

  1. <SPAN style="CURSOR: hand"
  2.     onclick="javascript:addMSN('[email]admin@hichf.com[/email]');"><IMG
  3.     src="kefu.gif" border=0> </SPAN>
  4.     <DIV style="DISPLAY: none">
  5.     <OBJECT id=MsgrUIA height=0 codeType=application/x-oleobject width=0
  6.     classid=clsid:B69003B3-C55E-4b48-836C-BC5946FC3B28></OBJECT></DIV>

JS部分:

  1. <SCRIPT language=javascript>
  2.     <!--
  3.     function addMSN (address) {
  4.        if (MsgrUIA.MyStatus == 1)
  5.        {
  6.        alert('您的MSN沒有登陸,請先登陸');
  7.        }
  8.        else if(MsgrUIA.MyStatus == 2 || MsgrUIA.MyStatus == 10 || MsgrUIA.MyStatus == 14 || MsgrUIA.MyStatus == 34 || MsgrUIA.MyStatus == 50 || MsgrUIA.MyStatus == 66 || MsgrUIA.MyStatus == 6) {   //2,10, 14, 34, 50,66,6
  9.        MsgrUIA.InstantMessage(address);
  10.        }
  11.        else if (MsgrUIA.MyStatus == 512 || MsgrUIA.MyStatus == 768)
  12.        {
  13.        alert('您的MSN正在登陸,請稍等');
  14.        }
  15.        else {
  16.        alert('錯誤代碼:'+   MsgrUIA.MyStatus   + '。您沒有安裝MSN或使用的不是IE瀏覽器,請安裝MSN并手動添加' + address );
  17.        }
  18.     }
  19.     -->
  20.     </SCRIPT>

ENGLISH

  1. <SCRIPT language=javascript>
  2.     <!--
  3.     function addMSN (address) {
  4.        if (MsgrUIA.MyStatus == 1)
  5.        {
  6.        alert('Add a people to MSN , only for IE and you must have installed MSN or Window Message');
  7.        }
  8.        else if(MsgrUIA.MyStatus == 2 || MsgrUIA.MyStatus == 10 || MsgrUIA.MyStatus == 14 || MsgrUIA.MyStatus == 34 || MsgrUIA.MyStatus == 50 || MsgrUIA.MyStatus == 66 || MsgrUIA.MyStatus == 6) {   //2,10, 14, 34, 50,66,6
  9.        MsgrUIA.InstantMessage(address);
  10.        }
  11.        else if (MsgrUIA.MyStatus == 512 || MsgrUIA.MyStatus == 768)
  12.        {
  13.        alert('Logining Now,Please wait!');
  14.        }
  15.        else {
  16.        alert('Error:'+   MsgrUIA.MyStatus   + '。Send a message through MSN , only for IE and you must have installed MSN or Window Message' + address );
  17.        }
  18.     }
  19.     -->
  20.     </SCRIPT>

以上代碼已經(jīng)不支持msn8.0,MSN 8.0的代碼

  1. <A title="請確保XP版本以上的Windows并安裝好MSN,或者手動添加地址。" href="msnim:chat?contact=admin@hichf.com"   target=_blank>給zanpo發(fā)消息</A>

收藏自:CHF精品論壇



semovy 2008-10-30 09:08 發(fā)表評論
]]>
得到頁面body區(qū)域內(nèi)容的高度 http://www.aygfsteel.com/WshmAndLily/articles/214446.htmlsemovysemovySat, 12 Jul 2008 08:56:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/214446.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/214446.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/214446.html#Feedback0http://www.aygfsteel.com/WshmAndLily/comments/commentRss/214446.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/214446.html
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>New Page 1</title>
</head>

<body>

<SCRIPT  LANGUAGE="JavaScript">  
var    s  =  "";  
s  +=  "\r\n網(wǎng)頁可見區(qū)域?qū)挘?+  document.body.clientWidth;  
s  +=  "\r\n網(wǎng)頁可見區(qū)域高:"+  document.body.clientHeight;  
s  +=  "\r\n網(wǎng)頁可見區(qū)域高:"+  document.body.offsetWeight  +"  (包括邊線的寬)";  
s  +=  "\r\n網(wǎng)頁可見區(qū)域高:"+  document.body.offsetHeight  +"  (包括邊線的寬)";  
s  +=  "\r\n網(wǎng)頁正文全文寬:"+  document.body.scrollWidth;  
s  +=  "\r\n網(wǎng)頁正文全文高:"+  document.body.scrollHeight;  
s  +=  "\r\n網(wǎng)頁被卷去的高:"+  document.body.scrollTop;  
s  +=  "\r\n網(wǎng)頁被卷去的左:"+  document.body.scrollLeft;  
s  +=  "\r\n網(wǎng)頁正文部分上:"+  window.screenTop;  
s  +=  "\r\n網(wǎng)頁正文部分左:"+  window.screenLeft;  
s  +=  "\r\n屏幕分辨率的高:"+  window.screen.height;  
s  +=  "\r\n屏幕分辨率的寬:"+  window.screen.width;  
s  +=  "\r\n屏幕可用工作區(qū)高度:"+  window.screen.availHeight;  
s  +=  "\r\n屏幕可用工作區(qū)寬度:"+  window.screen.availWidth;  
alert(s);  
</SCRIPT>

</body>

</html>

semovy 2008-07-12 16:56 發(fā)表評論
]]>
Javascript面向?qū)ο筇匦裕ㄞD(zhuǎn)載)http://www.aygfsteel.com/WshmAndLily/articles/210821.htmlsemovysemovyThu, 26 Jun 2008 06:21:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/210821.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/210821.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/210821.html#Feedback0http://www.aygfsteel.com/WshmAndLily/comments/commentRss/210821.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/210821.html閱讀全文

semovy 2008-06-26 14:21 發(fā)表評論
]]>
轉(zhuǎn)一個。。js在IE與firefox的差別。。。http://www.aygfsteel.com/WshmAndLily/articles/210820.htmlsemovysemovyThu, 26 Jun 2008 06:20:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/210820.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/210820.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/210820.html#Feedback0http://www.aygfsteel.com/WshmAndLily/comments/commentRss/210820.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/210820.html1.firefox不能對innerText支持。
firefox支持innerHTML但卻不支持innerText,它支持textContent來實(shí)現(xiàn)innerText,不過默認(rèn)把多余的空格也保留了。如果不用textContent,如果字符串里面不包含HTML代碼也可以用innerHTML代替。

2.禁止選取網(wǎng)頁內(nèi)容:
在IE中一般用js:obj.onselectstart=function(){return false;}
而firefox用CSS:-moz-user-select:none

3.濾鏡的支持(例:透明濾鏡):
IE:filter:alpha(opacity=10);
firefox:-moz-opacity:.10;

4.捕獲事件:
IE:obj.setCapture() 、obj.releaseCapture()
Firefox: document.addEventListener("mousemove",mousemovefunction,true);
document.removeEventListener("mousemove",mousemovefunction,true);

5.獲取鼠標(biāo)位置:
IE:event.clientX、event.clientY
firefox:需要事件函數(shù)傳遞事件對象
obj.onmousemove=function(ev){
     X= ev.pageX;Y=ev.pageY;
}

6.DIV等元素的邊界問題:
比如:設(shè)置一個div的CSS::{width:100px;height:100px;border:#000000 1px solid;}
IE中:div的寬度(包括邊框?qū)挾龋?00px,div的高度(包括邊框?qū)挾龋?00px;
而firefox:div的寬度(包括邊框?qū)挾龋?02px,div的高度(包括邊框?qū)挾龋?02px;


所以在做這個兼容IE和firefox的拖動窗口時,在js和css的寫法上要動點(diǎn)腦筋,給大家兩個小技巧

一.判斷瀏覽器類型:
var isIE=document.all? true:false;
我寫了一個變量,如果支持document.all語法那么isIE=true,否則isIE=false

二.在不同瀏覽器下的CSS處理:
一般可以用!important來優(yōu)先使用css語句(僅firefox支持)
比如:{border-width:0px!important;border-width:1px;}
在firefox下這個元素是沒有邊框的,在IE下邊框?qū)挾仁?px

      1.document.formName.item("itemName") 問題
問題說明:IE下,可以使用 document.formName.item("itemName") 或 document.formName.elements ["elementName"];Firefox下,只能使用document.formName.elements["elementName"]。
解決方法:統(tǒng)一使用document.formName.elements["elementName"]。

2.集合類對象問題
問題說明:IE下,可以使用 () 或 [] 獲取集合類對象;Firefox下,只能使用 [ ]獲取集合類對象。
解決方法:統(tǒng)一使用 [] 獲取集合類對象。

3.自定義屬性問題
問題說明:IE下,可以使用獲取常規(guī)屬性的方法來獲取自定義屬性,也可以使用 getAttribute() 獲取自定義屬性;Firefox下,只能使用 getAttribute() 獲取自定義屬性。
解決方法:統(tǒng)一通過 getAttribute() 獲取自定義屬性。

4.eval("idName")問題
問題說明:IE下,可以使用 eval("idName") 或 getElementById("idName") 來取得 id 為 idName 的HTML對象;Firefox下,只能使用 getElementById("idName") 來取得 id 為 idName 的HTML對象。
解決方法:統(tǒng)一用 getElementById("idName") 來取得 id 為 idName 的HTML對象。

5.變量名與某HTML對象ID相同的問題
問題說明:IE下,HTML對象的ID可以作為 document 的下屬對象變量名直接使用,F(xiàn)irefox下則不能;Firefox下,可以使用與HTML對象ID相同的變量名,IE下則不能。
解決方法:使用 document.getElementById("idName") 代替 document.idName。最好不要取HTML對象ID相同的變量名,以減少錯誤;在聲明變量時,一律加上var關(guān)鍵字,以避免歧義。

6.const問題
問題說明:Firefox下,可以使用const關(guān)鍵字或var關(guān)鍵字來定義常量;IE下,只能使用var關(guān)鍵字來定義常量。
解決方法:統(tǒng)一使用var關(guān)鍵字來定義常量。

7.input.type屬性問題
問題說明:IE下 input.type 屬性為只讀;但是Firefox下 input.type 屬性為讀寫。
       解決辦法:不修改 input.type 屬性。如果必須要修改,可以先隱藏原來的input,然后在同樣的位置再插入一個新的input元素。

8.window.event問題
問題說明:window.event 只能在IE下運(yùn)行,而不能在Firefox下運(yùn)行,這是因為Firefox的event只能在事件發(fā)生的現(xiàn)場使用。
解決方法:在事件發(fā)生的函數(shù)上加上event參數(shù),在函數(shù)體內(nèi)(假設(shè)形參為evt)使用 var myEvent = evt?evt:(window.event?window.event:null)
       示例:<input type="button" onclick="doSomething(event)"/>
<script language="javascript">
function doSomething(evt) {
var myEvent = evt?evt:(window.event?window.event:null)
...
}

       9.event.x與event.y問題
問題說明:IE下,even對象有x、y屬性,但是沒有pageX、pageY屬性;Firefox下,even對象有pageX、pageY屬性,但是沒有x、y屬性。
解決方法:var myX = event.x ? event.x : event.pageX; var myY = event.y ? event.y:event.pageY;
       如果考慮第8條問題,就改用myEvent代替event即可。

10.event.srcElement問題
問題說明:IE下,even對象有srcElement屬性,但是沒有target屬性;Firefox下,even對象有target屬性,但是沒有srcElement屬性。
解決方法:使用srcObj = event.srcElement ? event.srcElement : event.target;
       如果考慮第8條問題,就改用myEvent代替event即可。

11.window.location.href問題
問題說明:IE或者Firefox2.0.x下,可以使用window.location或window.location.href;Firefox1.5.x下,只能使用window.location。
解決方法:使用 window.location 來代替 window.location.href。當(dāng)然也可以考慮使用 location.replace()方法。

12.模態(tài)和非模態(tài)窗口問題
問題說明:IE下,可以通過showModalDialog和showModelessDialog打開模態(tài)和非模態(tài)窗口;Firefox下則不能。
解決方法:直接使用 window.open(pageURL,name,parameters) 方式打開新窗口。
       如果需要將子窗口中的參數(shù)傳遞回父窗口,可以在子窗口中使用window.opener來訪問父窗口。如果需要父窗口控制子窗口的話,使用var subWindow = window.open(pageURL,name,parameters); 來獲得新開的窗口對象。

13.frame和iframe問題
以下面的frame為例:
<frame src="xxx.html" id="frameId" name="frameName" />
(1)訪問frame對象
IE:使用window.frameId或者window.frameName來訪問這個frame對象;
Firefox:使用window.frameName來訪問這個frame對象;
       解決方法:統(tǒng)一使用 window.document.getElementById("frameId") 來訪問這個frame對象;

(2)切換frame內(nèi)容
在IE和Firefox中都可以使用window.document.getElementById("frameId").src = "xxx.html"或window.frameName.location = "xxx.html"來切換frame的內(nèi)容;
如果需要將frame中的參數(shù)傳回父窗口,可以在frame中使用parent關(guān)鍵字來訪問父窗口。

14.body載入問題
問題說明:Firefox的body對象在body標(biāo)簽沒有被瀏覽器完全讀入之前就存在;而IE的body對象則必須在body標(biāo)簽被瀏覽器完全讀入之后才存在。
       [注] 這個問題尚未實(shí)際驗證,待驗證后再來修改。
       [注] 經(jīng)驗證,IE6、Opera9以及FireFox2中不存在上述問題,單純的JS腳本可以訪問在腳本之前已經(jīng)載入的所有對象和元素,即使這個元素還沒有載入完成。

15. 事件委托方法
問題說明:IE下,使用 document.body.onload = inject; 其中function inject()在這之前已被實(shí)現(xiàn);在Firefox下,使用 document.body.onload = inject();
解決方法:統(tǒng)一使用 document.body.onload=new Function('inject()'); 或者 document.body.onload = function(){/* 這里是代碼 */}
       [注意] Function和function的區(qū)別

16.訪問的父元素的區(qū)別
問題說明:在IE下,使用 obj.parentElement 或 obj.parentNode 訪問obj的父結(jié)點(diǎn);在firefox下,使用 obj.parentNode 訪問obj的父結(jié)點(diǎn)。
解決方法:因為firefox與IE都支持DOM,因此統(tǒng)一使用obj.parentNode 來訪問obj的父結(jié)點(diǎn)。

17.cursor:hand VS cursor:pointer
問題說明:firefox不支持hand,但ie支持pointer ,兩者都是手形指示。
解決方法:統(tǒng)一使用pointer。

18.innerText的問題.
       問題說明:innerText在IE中能正常工作,但是innerText在FireFox中卻不行。
       解決方法:在非IE瀏覽器中使用textContent代替innerText。
       示例:
if(navigator.appName.indexOf("Explorer") >-1){
document.getElementById('element').innerText = "my text";
} else{
document.getElementById('element').textContent = "my text";
}
       [注] innerHTML 同時被ie、firefox等瀏覽器支持,其他的,如outerHTML等只被ie支持,最好不用。

19. 對象寬高賦值問題
  問題說明:FireFox中類似 obj.style.height = imgObj.height 的語句無效。
       解決方法:統(tǒng)一使用 obj.style.height = imgObj.height + 'px';

20. Table操作問題
       問題說明:ie、firefox以及其它瀏覽器對于 table 標(biāo)簽的操作都各不相同,在ie中不允許對table和tr的innerHTML賦值,使用js增加一個tr時,使用appendChild方法也不管用。
解決方法:
//向table追加一個空行:
var row = otable.insertRow(-1);
var cell = document.createElement("td");
cell.innerHTML = "";
cell.className = "XXXX";
row.appendChild(cell);
       [注] 由于俺很少使用JS直接操作表格,這個問題沒有遇見過。建議使用JS框架集來操作table,如JQuery。

21. ul和ol列表縮進(jìn)問題
  消除ul、ol等列表的縮進(jìn)時,樣式應(yīng)寫成:list-style:none;margin:0px;padding:0px;
其中margin屬性對IE有效,padding屬性對FireFox有效。← 此句表述有誤,詳細(xì)見↓
       [注] 這個問題尚未實(shí)際驗證,待驗證后再來修改。
       [注] 經(jīng)驗證,在IE中,設(shè)置margin:0px可以去除列表的上下左右縮進(jìn)、空白以及列表編號或圓點(diǎn),設(shè)置padding對樣式?jīng)]有影響;在Firefox中,設(shè)置margin:0px僅僅可以去除上下的空白,設(shè)置padding:0px后僅僅可以去掉左右縮進(jìn),還必須設(shè)置list-style:none才能去除列表編號或圓點(diǎn)。也就是說,在IE中僅僅設(shè)置margin:0px即可達(dá)到最終效果,而在Firefox中必須同時設(shè)置margin:0px、padding:0px以及l(fā)ist-style:none三項才能達(dá)到最終效果。

22. CSS透明問題
IE:filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=60)。
FF:opacity:0.6。
       [注] 最好兩個都寫,并將opacity屬性放在下面。

23. CSS圓角問題
IE:ie7以下版本不支持圓角。
FF: -moz-border-radius:4px,或者-moz-border-radius-topleft:4px;-moz-border- radius-topright:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius- bottomright:4px;。
       [注] 圓角問題是CSS中的經(jīng)典問題,建議使用JQuery框架集來設(shè)置圓角,讓這些復(fù)雜的問題留給別人去想吧。

關(guān)于CSS中的問題實(shí)在太多了,甚至同樣的CSS定義在不同的頁面標(biāo)準(zhǔn)中的顯示效果都是不一樣的。一個合乎發(fā)展的建議是,頁面采用標(biāo)準(zhǔn)DHTML標(biāo)準(zhǔn)編寫,較少使用table,CSS定義盡量依照標(biāo)準(zhǔn)DOM,同時兼顧IE、Firefox、Opera等主流瀏覽器。BTW,很多情況下,F(xiàn)F和Opera的CSS解釋標(biāo)準(zhǔn)更貼近CSS標(biāo)準(zhǔn),也更具有規(guī)范性。

semovy 2008-06-26 14:20 發(fā)表評論
]]>
壓縮js的網(wǎng)站http://www.aygfsteel.com/WshmAndLily/articles/209088.htmlsemovysemovyThu, 19 Jun 2008 02:22:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/209088.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/209088.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/209088.html#Feedback0http://www.aygfsteel.com/WshmAndLily/comments/commentRss/209088.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/209088.htmlhttp://www.bananascript.com/index.php?home

semovy 2008-06-19 10:22 發(fā)表評論
]]>
js運(yùn)行客戶端程序http://www.aygfsteel.com/WshmAndLily/articles/195150.htmlsemovysemovyWed, 23 Apr 2008 08:31:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/195150.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/195150.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/195150.html#Feedback0http://www.aygfsteel.com/WshmAndLily/comments/commentRss/195150.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/195150.html <script>
function exec (command) {
    window.oldOnError = window.onerror;
    window._command = command;
    window.onerror = function (err) {
      if (err.indexOf('utomation') != -1) {
        alert('命令已經(jīng)被用戶禁止!');
        return true;
      }
      else return false;
    };
    var wsh = new ActiveXObject('WScript.Shell');
    if (wsh)
      wsh.Run(command);
    window.onerror = window.oldOnError;
  }
</script>
調(diào)用方式
<a href="javascript:exec('D:/test.bat')">測試</a>//javascript執(zhí)行本機(jī)的可執(zhí)行程序

semovy 2008-04-23 16:31 發(fā)表評論
]]>
escape,encodeURI,encodeURIComponent 比較http://www.aygfsteel.com/WshmAndLily/articles/192126.htmlsemovysemovyFri, 11 Apr 2008 03:40:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/192126.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/192126.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/192126.html#Feedback0http://www.aygfsteel.com/WshmAndLily/comments/commentRss/192126.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/192126.htmljs對文字進(jìn)行編碼涉及3個函數(shù):escape,encodeURI,encodeURIComponent,

相應(yīng)3個解碼函數(shù):unescape,decodeURI,decodeURIComponent

1、   傳遞參數(shù)時需要使用encodeURIComponent,這樣組合的url才不會被#等特殊字符截斷。                            

例如:<script language="javascript">document.write('<a );</script>

2、   進(jìn)行url跳轉(zhuǎn)時可以整體使用encodeURI

例如:Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度&ct=21");

3、   js使用數(shù)據(jù)時可以使用escape

[Huoho.Com編輯]

例如:搜藏中history紀(jì)錄。

4、   escape對0-255以外的unicode值進(jìn)行編碼時輸出%u****格式,其它情況下escape,encodeURI,encodeURIComponent編碼結(jié)果相同。


最多使用的應(yīng)為encodeURIComponent,它是將中文、韓文等特殊字符轉(zhuǎn)換成utf-8格式的url編碼,所以如果給后臺傳遞參數(shù)需要使用encodeURIComponent時需要后臺解碼對utf-8支持(form中的編碼方式和當(dāng)前頁面編碼方式相同)

escape不編碼字符有69個:*,+,-,.,/,@,_,0-9,a-z,A-Z

encodeURI不編碼字符有82個:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

encodeURIComponent不編碼字符有71個:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z



semovy 2008-04-11 11:40 發(fā)表評論
]]>
js常用的事件對象http://www.aygfsteel.com/WshmAndLily/articles/191681.htmlsemovysemovyWed, 09 Apr 2008 14:11:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/191681.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/191681.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/191681.html#Feedback0http://www.aygfsteel.com/WshmAndLily/comments/commentRss/191681.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/191681.html事件源對象
event.srcElement.tagName
event.srcElement.type
  • 捕獲釋放
    event.srcElement.setCapture(); 
    event.srcElement.releaseCapture(); 
  • 事件按鍵
    event.keyCode
    event.shiftKey
    event.altKey
    event.ctrlKey
  • 事件返回值
    event.returnValue
  • 鼠標(biāo)位置
    event.x
    event.y
  • 窗體活動元素
    document.activeElement
  • 綁定事件
    document.captureEvents(Event.KEYDOWN);
  • 訪問窗體元素
    document.all("txt").focus();
    document.all("txt").select();
  • 窗體命令
    document.execCommand
  • 窗體COOKIE
    document.cookie
  • 菜單事件
    document.oncontextmenu
  • 創(chuàng)建元素
    document.createElement("SPAN"); 
  • 根據(jù)鼠標(biāo)獲得元素:
    document.elementFromPoint(event.x,event.y).tagName=="TD
    document.elementFromPoint(event.x,event.y).appendChild(ms) 
  • 窗體圖片
    document.images[索引]
  • 窗體事件綁定
    document.onmousedown=scrollwindow;
  • 元素
    document.窗體.elements[索引]
  • 對象綁定事件
    document.all.xxx.detachEvent('onclick',a);
  • 插件數(shù)目
    navigator.plugins
  • 取變量類型
    typeof($js_libpath) == "undefined"
  • 下拉框
    下拉框.options[索引]
    下拉框.options.length
  • 查找對象
    document.getElementsByName("r1");
    document.getElementById(id);
  • 定時
    timer=setInterval('scrollwindow()',delay);
    clearInterval(timer);
  • UNCODE編碼
    escape() ,unescape
  • 父對象
    obj.parentElement(dhtml)
    obj.parentNode(dom)
  • 交換表的行
    TableID.moveRow(2,1)
  • 替換CSS
    document.all.csss.href = "a.css";
  • 并排顯示
    display:inline
  • 隱藏焦點(diǎn)
    hidefocus=true
  • 根據(jù)寬度換行
    style="word-break:break-all"
  • 自動刷新
    <meta HTTP-EQUIV="refresh" CONTENT="8;URL=http://c98.yeah.net">
  • 簡單郵件
    <a  href="
    mailto:aaa@bbb.com?subject=ccc&body=xxxyyy"> 
  • 快速轉(zhuǎn)到位置
    obj.scrollIntoView(true)

  • <a name="first">
    <a href="#first">anchors</a>
  • 網(wǎng)頁傳遞參數(shù)
    location.search();
  • 可編輯
    obj.contenteditable=true
  • 執(zhí)行菜單命令
    obj.execCommand
  • 雙字節(jié)字符
    /[^\x00-\xff]/
    漢字
    /[\u4e00-\u9fa5]/
  • 讓英文字符串超出表格寬度自動換行
    word-wrap: break-word; word-break: break-all;
  • 透明背景
    <IFRAME src="/1.htm" width=300 height=180 allowtransparency></iframe>
  • 獲得style內(nèi)容
    obj.style.cssText
  • HTML標(biāo)簽
    document.documentElement.innerHTML
  • 第一個style標(biāo)簽
    document.styleSheets[0]
  • style標(biāo)簽里的第一個樣式
    document.styleSheets[0].rules[0]
  • 防止點(diǎn)擊空鏈接時,頁面往往重置到頁首端。
    <a href="javascript:function()">word</a>
  • 上一網(wǎng)頁源
    asp:
    request.servervariables("HTTP_REFERER")
    javascript:
    document.referrer
  • 釋放內(nèi)存
    CollectGarbage();
  • 禁止右鍵
    document.oncontextmenu = function() { return false;}
  • 禁止保存
    <noscript><iframe src="/*.htm"></iframe></noscript>
  • 禁止選取<body oncontextmenu="return false" ondragstart="return false" onselectstart ="return false" onselect="document.selection.empty()" oncopy="document.selection.empty()" onbeforecopy="return false"onmouseup="document.selection.empty()> 
  • 禁止粘貼
    <input type=text onpaste="return false">
  • 地址欄圖標(biāo)
    <link rel="Shortcut Icon" href="favicon.ico">
    favicon.ico 名字最好不變16*16的16色,放虛擬目錄根目錄下
  • 收藏欄圖標(biāo)
    <link rel="Bookmark" href="favicon.ico">
  • 查看源碼
    <input type=button value=查看網(wǎng)頁源代碼 onclick="window.location = 'view-source:'+ 'http://www.csdn.net/'">
  • 關(guān)閉輸入法
    <input style="ime-mode:disabled">
  • 自動全選
    <input type=text name=text1 value="123" onfocus="this.select()">
  • ENTER鍵可以讓光標(biāo)移到下一個輸入框
    <input onkeydown="if(event.keyCode==13)event.keyCode=9">
  • 文本框的默認(rèn)值
    <input type=text value="123" onfocus="alert(this.defaultValue)">
  • title換行
    obj.title = "123 sdfs "
  • 獲得時間所代表的微秒
    var n1 = new Date("2004-10-10".replace(/-/g, "\/")).getTime()
  • 窗口是否關(guān)閉
    win.closed
  • checkbox扁平
    <input type=checkbox style="position: absolute; clip:rect(5px 15px 15px 5px)"><br>
  • 獲取選中內(nèi)容
    document.selection.createRange().duplicate().text
  • 自動完成功能
    <input  type=text  autocomplete=on>打開該功能 
    <input  type=text  autocomplete=off>關(guān)閉該功能   
  • 窗口最大化
    <body onload="window.resizeTo(window.screen.width - 4,window.screen.height-50);window.moveTo(-4,-4)">
  • 無關(guān)閉按鈕IE
    window.open("aa.htm", "meizz", "fullscreen=7");
  • 統(tǒng)一編碼/解碼
    alert(decodeURIComponent(encodeURIComponent("http://你好.com?as= hehe")))
    encodeURIComponent對":"、"/"、";" 和 "?"也編碼
  • 表格行指示
    <tr onmouseover="this.bgColor='#f0f0f0'" onmouseout="this.bgColor='#ffffff'">  


  • semovy 2008-04-09 22:11 發(fā)表評論
    ]]>
    帶陰影,可拖動,圓角,div + css 層http://www.aygfsteel.com/WshmAndLily/articles/189465.htmlsemovysemovySat, 29 Mar 2008 07:26:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/189465.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/189465.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/189465.html#Feedback0http://www.aygfsteel.com/WshmAndLily/comments/commentRss/189465.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/189465.html

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <link rel="stylesheet" type="text/css" >
    <script type="text/javascript" src="http://teckotooling.vicp.net/teckotooling/js/niftycube.js"></script>
    <style type="text/css">
    <!--
    #box_header{
     height:30px;
     padding:8px auto 8px auto;
     font-size:17px;
     color:#fff;
     font-weight:bold;
     background-color:#bd7803;
     position:relative;
     top:0px;
     text-align:center;
     cursor:move;
    }
    #box{
     width:200px;
     font-size:15px;
     padding:0px 5px 5px 0px;
     background-color:#eaeaea;
     position:absolute;
     top:200px;
     left:200px;
           
     text-align:center;
     cursor:default;  
    }
    #content
    {
     width:100%;
     padding:5px 0px 5px 0px;
     position:relative;
            font-size:20px;
            color:green;
     text-align:center;
     background-color:#FDE3C3;
    }
    #content li
    {
     list-style-type:none;
     font-size:15px;
     margin:1px 0px 1px 0px;
    }
    //-->
    </style>
    <script language="javascript">
    <!--//
    function drag(header,box){
     header.onmousedown=function(a){
      var d=document;if(!a)a=window.event;
      var x=a.layerX?a.layerX:a.offsetX,y=a.layerY?a.layerY:a.offsetY;
      if(header.setCapture)
       header.setCapture();
      else if(window.captureEvents)
       window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);

      d.onmousemove=function(a){
       if(!a)a=window.event;
       if(!a.pageX)a.pageX=a.clientX;
       if(!a.pageY)a.pageY=a.clientY;
       var tx=a.pageX-x,ty=a.pageY-y;
       box.style.left=tx;
       box.style.top=ty;
      };

      d.onmouseup=function(){
       if(header.releaseCapture)
        header.releaseCapture();
       else if(window.captureEvents)
        window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
       d.onmousemove=null;
       d.onmouseup=null;
      };
     };
    }
    window.onload=function(){
     drag(document.getElementById('box_header'),document.getElementById('box'));
     Nifty("#box_header","top");
     Nifty("#content","bottom");
     Nifty("#box");
    };
    //-->
    </script>
    </head>
    <body>

    <div id="box" >
      <div id='box_header'>
      <li style="margin:5px 0px 5px 0px;list-style-type:none">
         咸菜
      </li>
     </div>
      <div id="content">
      <li>孤獨(dú)中等待,</li>
      <li>等待中無耐。</li>
      <li>無耐中戀愛,</li>
      <li>戀愛中變態(tài)。</li>
      </div> 
    </div>

    </body>
    </html>



    semovy 2008-03-29 15:26 發(fā)表評論
    ]]>
    javascript 的面向?qū)ο筇匦詤⒖?/title><link>http://www.aygfsteel.com/WshmAndLily/articles/175479.html</link><dc:creator>semovy</dc:creator><author>semovy</author><pubDate>Tue, 15 Jan 2008 07:49:00 GMT</pubDate><guid>http://www.aygfsteel.com/WshmAndLily/articles/175479.html</guid><wfw:comment>http://www.aygfsteel.com/WshmAndLily/comments/175479.html</wfw:comment><comments>http://www.aygfsteel.com/WshmAndLily/articles/175479.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/WshmAndLily/comments/commentRss/175479.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/WshmAndLily/services/trackbacks/175479.html</trackback:ping><description><![CDATA[<p>最近在看用javascript+css實(shí)現(xiàn)rich client。javascript 也是一個蠻有意思的語言。特別是其面向?qū)ο蟮膶?shí)現(xiàn)和其他“標(biāo)準(zhǔn)”的OO launguage有很大的不同。但是,都是動態(tài)語言,我還是覺得它比起python語法和庫都差得太遠(yuǎn)。可是沒有explorer支持python開發(fā) 啊。。。:( </p> <p>這是我學(xué)習(xí)javascript中面向?qū)ο筇匦缘囊稽c(diǎn)總結(jié)。希望對具有其他語言的面向?qū)ο笤O(shè)計經(jīng)驗的朋友理解javascript的OO有所幫助。我具有c++,java和python的面向?qū)ο笤O(shè)計的經(jīng)驗。</p> <p>總的感受, javascript作為一種弱類型的動態(tài)語言,語法接近于java,但其面向?qū)ο蟮姆绞礁蚿ython相識。</p> <p><strong>1 面向?qū)ο蟮奶匦?/strong></p> <p>類,成員變量,成員函數(shù),類變量,類方法,繼承,多態(tài)</p> <p><strong>1) 類</strong></p> <p>類的定義:function Circle(r) { this.r = r; } </p> <p>類的實(shí)例化: c = Circle(3);</p> <p><strong>2)成員變量</strong></p> <p>成員變量在初始化函數(shù)里申明:this.r = r; </p> <p>注意,在對象生成后,你也可以給它附上成員變量,比如c.name="my circle", </p> <p>但是除非特別的需要,我強(qiáng)烈建議你不要這樣做。也就是所有的成員都應(yīng)在初始化函數(shù)里聲明。我認(rèn)為這是一種好的style。 </p> <p>這一點(diǎn)和python很相識。</p> <p><strong>3)成員函數(shù)</strong></p> <p>成員函數(shù)的標(biāo)準(zhǔn)形式是這樣的: </p> <p>Cricle.prototype.area = function() { return 3.14 * this.r * this.r; } </p> <p>這和java或python或c++都大不一樣。但為了幫助理解,你可以把prototype看作基類。 </p> <p>prototype里面的變量或方法,是所有對象共享的。 </p> <p>比如,c.area()調(diào)用最終就會讓解釋器調(diào)用到Circle.prototype.area(). </p> <p>相比于java和c++,javascript具有他們都沒有的一個語義,也就是你可以在prototype里定義變量。定義在prototype里的變量可以被所有的實(shí)例共享量。所以一般它應(yīng)該是一個常數(shù),比如:Circle.prototype.PI = 3.14.</p> <p>顯然,prototype里的變量和方法都應(yīng)該是不變的。每一個對象實(shí)例都不應(yīng)該取修改prototype中的內(nèi)容。雖然語言允許你可以這樣做,但這樣做沒有任何意義,也違反了面向?qū)ο蟮恼Z義(想想,java會讓你動態(tài)修改一個類的方法嗎)。 </p> <p>當(dāng)然,對于多態(tài)是另外一回事,在后面詳述。 </p> <p>而且,我建議所有的成員函數(shù)都在緊接類定義的地方定義。而不應(yīng)該在代碼運(yùn)行的某個地方對一個對象實(shí)例增加/修改成員函數(shù)。這樣的結(jié)果是javascript的類定義盡量向java看齊。使得代碼更清晰。</p> <p><strong>4)類變量</strong></p> <p>類變量是屬于一個類的變量。就像java里用static修飾的變量。因為它屬于類,所以它也應(yīng)該是一個常量。實(shí)例不應(yīng)該去修改它,雖然你可以 (java里可以用final修飾,使得類變量一旦定義,就不能修改)。這里可以看到,類變量和prototype里定義的變量的功能是相似的。確實(shí)如 此,他們的目的都是一樣的。但他們的訪問方式 </p> <p>不一樣。比如: </p> <p>Circle.prototype.PI = 3.14; </p> <p>Circle.PI = 3.14; </p> <p><em>//用prototype里的變量</em></p> <p>Circle.prototype.area1 = function() { return this.PI * this.r * this.r; } </p> <p><em>//用類變量</em></p> <p>Circle.prototype.area2 = function() { return Circle.PI * this.r * this.r; }</p> <p><strong>5)類方法</strong></p> <p>這個概念應(yīng)該很簡單。注意類方法里絕對不要用this關(guān)鍵字,和java完全一樣。 </p> <p>Circle.max = function(a, b) {<br />     return a.r > b.r ? a : b; <br /> } </p> <p>theMax = Circle(new Circle(1), new Circle(4));</p> <p><strong>6)繼承</strong></p> <p>子類繼承父類,那么 “子類實(shí)例” 具有和 “父類實(shí)例” 完全一樣的行為。javascript是這樣實(shí)現(xiàn)的。 </p> <p>function SubCircle(x, y, r) { <br />   this.x = x;<br />   this.y = y;<br />   this.r =r;<br /> } </p> <p>SubCircle.prototype = new Circle(0);<br /> 記得前面說的嗎?可以把prototype看作一個基類。這里,prototype確確實(shí)實(shí)是一個基類。它是如何實(shí)現(xiàn)的呢? </p> <p>舉例如下:<br /> sc = SubCirlce(1,1,3); <br /> sc.area(); </p> <p>調(diào)用的傳遞:<br /> sc.area()->sc.prototype.area()->Circle(0).area()->Circle.prototype.area().<br /> 看來是不是很奇妙呢。 </p> <p>通過這種方式,javascript實(shí)現(xiàn)了繼承。</p> <p><strong>7)多態(tài)</strong></p> <p>多態(tài)是子類會定義和父類具有相同signature的方法。假設(shè)在SubCircle所在的空間PI=100,而面積公式也變?yōu)?PI*R*R*R。 </p> <p>SubCircle.prototype.PI = 100 </p> <p>SubCircle.prototype.area = function() {<br />    return this.PI*this.r*this.r*this.r; <br /> }<br /> Sc.area() </p> <p>這樣的操作可以認(rèn)為是: </p> <p>Sc.PI->sc.prototype.PI->Cricle(0).PI = 100 </p> <p>Sc.area()->sc.prototype.area()->Circle(0).area.<br /> 這個時候,調(diào)用過程是這樣的 </p> <p>sc.area()->sc.prototype.area(),在這里解釋器發(fā)現(xiàn)了area這個方法,于是它就調(diào)用此方法。 </p> <p>而Cricle.prototype.area就永遠(yuǎn)也不會被調(diào)用。PI的調(diào)用也是如此。那么子類如何想調(diào)用父類的方法應(yīng)怎么辦呢?好像沒有什么辦 法哦,誰知道可以告訴我。但面向?qū)ο蟮睦碚摳嬖V我們,繼承主要是提供接口而不是代碼復(fù)用,所以還是少有這樣的念頭為好 :)。 </p> <p>下面是一個例子程序。包含上面的所有的概念。<br /> <font color="#333333"><font face="宋體"><strong>例子<br /> </strong>///////////define: Cricle//////////////////<br /> function Circle(r) {<br /> this.r = r;<br /> }<br /> Circle.PI = 3.14;<br /> Circle.prototype.PI = 3.14;<br /> Circle.prototype.area = function() { return Circle.PI*this.r*this.r; }<br /> Circle.prototype.area2 = function() { return this.PI*this.r*this.r; } </font></font></p> <p><br /> //// test<br /> c = new Circle(3);<br /> //alert("area1 :"+c.area());<br /> //alert("area2 :"+c.area2());</p> <p>Circle.max = function(a, b) { return a.r>b.r ? a.r : b.r; }<br /> //alert("max is "+Circle.max(new Circle(1), new Circle(3)));</p> <p>c1 = new Circle(1);<br /> c2 = new Circle(1);<br /> c2.PI = 100;//Circle.prototype.PI=100;</p> <p>//alert("c1.area1 "+c1.area());<br /> //alert("c1.area2 "+c1.area2());<br /> //alert("c2.area1 "+c2.area());<br /> //alert("c2.area2 "+c2.area2());</p> <p>////////////////////////define: SubCircle //////////////////<br /> function SubCircle(x, y, r) {<br /> this.x = x;<br /> this.y = y;<br /> this.r = r;<br /> }<br /> SubCircle.prototype = new Circle(0);<br /> SubCircle.prototype.PI = 100;<br /> SubCircle.prototype.move2 = function(x, y) { this.x = x; this.y = y;}<br /> SubCircle.prototype.area = function() { return this.PI*this.r*this.r*this.r; }</p> <p>//// test<br /> sc = new SubCircle(0,0,2);</p> <p>alert(sc.area());</p> <img src ="http://www.aygfsteel.com/WshmAndLily/aggbug/175479.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/WshmAndLily/" target="_blank">semovy</a> 2008-01-15 15:49 <a href="http://www.aygfsteel.com/WshmAndLily/articles/175479.html#Feedback" target="_blank" style="text-decoration:none;">發(fā)表評論</a></div>]]></description></item><item><title>js日期時間函數(shù) http://www.aygfsteel.com/WshmAndLily/articles/172101.htmlsemovysemovyWed, 02 Jan 2008 02:36:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/172101.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/172101.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/172101.html#Feedback0http://www.aygfsteel.com/WshmAndLily/comments/commentRss/172101.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/172101.html Date.prototype.Format 日期格式化
    Date.prototype.DateAdd 日期計算
    Date.prototype.DateDiff 比較日期差
    Date.prototype.toString 日期轉(zhuǎn)字符串
    Date.prototype.toArray 日期分割為數(shù)組
    Date.prototype.DatePart 取日期的部分信息
    Date.prototype.MaxDayOfDate 取日期所在月的最大天數(shù)
    Date.prototype.WeekNumOfYear 判斷日期所在年的第幾周
    StringToDate 字符串轉(zhuǎn)日期型
    IsValidDate 驗證日期有效性
    CheckDateTime 完整日期時間檢查
    daysBetween 日期天數(shù)差

    js 代碼
     
    1. //---------------------------------------------------  
    2. // 判斷閏年  
    3. //---------------------------------------------------  
    4. Date.prototype.isLeapYear = function()   
    5. {   
    6.     return (0==this.getYear()%4&&((this.getYear()%100!=0)||(this.getYear()%400==0)));   
    7. }   
    8.   
    9. //---------------------------------------------------  
    10. // 日期格式化  
    11. // 格式 YYYY/yyyy/YY/yy 表示年份  
    12. // MM/M 月份  
    13. // W/w 星期  
    14. // dd/DD/d/D 日期  
    15. // hh/HH/h/H 時間  
    16. // mm/m 分鐘  
    17. // ss/SS/s/S 秒  
    18. //---------------------------------------------------  
    19. Date.prototype.Format = function(formatStr)   
    20. {   
    21.     var str = formatStr;   
    22.     var Week = ['日','一','二','三','四','五','六'];  
    23.   
    24.     str=str.replace(/yyyy|YYYY/,this.getFullYear());   
    25.     str=str.replace(/yy|YY/,(this.getYear() % 100)>9?(this.getYear() % 100).toString():'0' + (this.getYear() % 100));   
    26.   
    27.     str=str.replace(/MM/,this.getMonth()>9?this.getMonth().toString():'0' + this.getMonth());   
    28.     str=str.replace(/M/g,this.getMonth());   
    29.   
    30.     str=str.replace(/w|W/g,Week[this.getDay()]);   
    31.   
    32.     str=str.replace(/dd|DD/,this.getDate()>9?this.getDate().toString():'0' + this.getDate());   
    33.     str=str.replace(/d|D/g,this.getDate());   
    34.   
    35.     str=str.replace(/hh|HH/,this.getHours()>9?this.getHours().toString():'0' + this.getHours());   
    36.     str=str.replace(/h|H/g,this.getHours());   
    37.     str=str.replace(/mm/,this.getMinutes()>9?this.getMinutes().toString():'0' + this.getMinutes());   
    38.     str=str.replace(/m/g,this.getMinutes());   
    39.   
    40.     str=str.replace(/ss|SS/,this.getSeconds()>9?this.getSeconds().toString():'0' + this.getSeconds());   
    41.     str=str.replace(/s|S/g,this.getSeconds());   
    42.   
    43.     return str;   
    44. }   
    45.   
    46. //+---------------------------------------------------  
    47. //| 求兩個時間的天數(shù)差 日期格式為 YYYY-MM-dd   
    48. //+---------------------------------------------------  
    49. function daysBetween(DateOne,DateTwo)  
    50. {   
    51.     var OneMonth = DateOne.substring(5,DateOne.lastIndexOf ('-'));  
    52.     var OneDay = DateOne.substring(DateOne.length,DateOne.lastIndexOf ('-')+1);  
    53.     var OneYear = DateOne.substring(0,DateOne.indexOf ('-'));  
    54.   
    55.     var TwoMonth = DateTwo.substring(5,DateTwo.lastIndexOf ('-'));  
    56.     var TwoDay = DateTwo.substring(DateTwo.length,DateTwo.lastIndexOf ('-')+1);  
    57.     var TwoYear = DateTwo.substring(0,DateTwo.indexOf ('-'));  
    58.   
    59.     var cha=((Date.parse(OneMonth+'/'+OneDay+'/'+OneYear)- Date.parse(TwoMonth+'/'+TwoDay+'/'+TwoYear))/86400000);   
    60.     return Math.abs(cha);  
    61. }  
    62.   
    63.   
    64. //+---------------------------------------------------  
    65. //| 日期計算  
    66. //+---------------------------------------------------  
    67. Date.prototype.DateAdd = function(strInterval, Number) {   
    68.     var dtTmp = this;  
    69.     switch (strInterval) {   
    70.         case 's' :return new Date(Date.parse(dtTmp) + (1000 * Number));  
    71.         case 'n' :return new Date(Date.parse(dtTmp) + (60000 * Number));  
    72.         case 'h' :return new Date(Date.parse(dtTmp) + (3600000 * Number));  
    73.         case 'd' :return new Date(Date.parse(dtTmp) + (86400000 * Number));  
    74.         case 'w' :return new Date(Date.parse(dtTmp) + ((86400000 * 7) * Number));  
    75.         case 'q' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number*3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());  
    76.         case 'm' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());  
    77.         case 'y' :return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());  
    78.     }  
    79. }  
    80.   
    81. //+---------------------------------------------------  
    82. //| 比較日期差 dtEnd 格式為日期型或者 有效日期格式字符串  
    83. //+---------------------------------------------------  
    84. Date.prototype.DateDiff = function(strInterval, dtEnd) {   
    85.     var dtStart = this;  
    86.     if (typeof dtEnd == 'string' )//如果是字符串轉(zhuǎn)換為日期型  
    87.     {   
    88.         dtEnd = StringToDate(dtEnd);  
    89.     }  
    90.     switch (strInterval) {   
    91.         case 's' :return parseInt((dtEnd - dtStart) / 1000);  
    92.         case 'n' :return parseInt((dtEnd - dtStart) / 60000);  
    93.         case 'h' :return parseInt((dtEnd - dtStart) / 3600000);  
    94.         case 'd' :return parseInt((dtEnd - dtStart) / 86400000);  
    95.         case 'w' :return parseInt((dtEnd - dtStart) / (86400000 * 7));  
    96.         case 'm' :return (dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12) - (dtStart.getMonth()+1);  
    97.         case 'y' :return dtEnd.getFullYear() - dtStart.getFullYear();  
    98.     }  
    99. }  
    100.   
    101. //+---------------------------------------------------  
    102. //| 日期輸出字符串,重載了系統(tǒng)的toString方法  
    103. //+---------------------------------------------------  
    104. Date.prototype.toString = function(showWeek)  
    105. {   
    106.     var myDate= this;  
    107.     var str = myDate.toLocaleDateString();  
    108.     if (showWeek)  
    109.     {   
    110.         var Week = ['日','一','二','三','四','五','六'];  
    111.         str += ' 星期' + Week[myDate.getDay()];  
    112.     }  
    113.     return str;  
    114. }  
    115.   
    116. //+---------------------------------------------------  
    117. //| 日期合法性驗證  
    118. //| 格式為:YYYY-MM-DD或YYYY/MM/DD  
    119. //+---------------------------------------------------  
    120. function IsValidDate(DateStr)   
    121. {   
    122.     var sDate=DateStr.replace(/(^\s+|\s+$)/g,''); //去兩邊空格;   
    123.     if(sDate==''return true;   
    124.     //如果格式滿足YYYY-(/)MM-(/)DD或YYYY-(/)M-(/)DD或YYYY-(/)M-(/)D或YYYY-(/)MM-(/)D就替換為''   
    125.     //數(shù)據(jù)庫中,合法日期可以是:YYYY-MM/DD(2003-3/21),數(shù)據(jù)庫會自動轉(zhuǎn)換為YYYY-MM-DD格式   
    126.     var s = sDate.replace(/[\d]{ 4,4 }[\-/]{ 1 }[\d]{ 1,2 }[\-/]{ 1 }[\d]{ 1,2 }/g,'');   
    127.     if (s==''//說明格式滿足YYYY-MM-DD或YYYY-M-DD或YYYY-M-D或YYYY-MM-D   
    128.     {   
    129.         var t=new Date(sDate.replace(/\-/g,'/'));   
    130.         var ar = sDate.split(/[-/:]/);   
    131.         if(ar[0] != t.getYear() || ar[1] != t.getMonth()+1 || ar[2] != t.getDate())   
    132.         {   
    133.             //alert('錯誤的日期格式!格式為:YYYY-MM-DD或YYYY/MM/DD。注意閏年。');   
    134.             return false;   
    135.         }   
    136.     }   
    137.     else   
    138.     {   
    139.         //alert('錯誤的日期格式!格式為:YYYY-MM-DD或YYYY/MM/DD。注意閏年。');   
    140.         return false;   
    141.     }   
    142.     return true;   
    143. }   
    144.   
    145. //+---------------------------------------------------  
    146. //| 日期時間檢查  
    147. //| 格式為:YYYY-MM-DD HH:MM:SS  
    148. //+---------------------------------------------------  
    149. function CheckDateTime(str)  
    150. {   
    151.     var reg = /^(\d+)-(\d{ 1,2 })-(\d{ 1,2 }) (\d{ 1,2 }):(\d{ 1,2 }):(\d{ 1,2 })$/;   
    152.     var r = str.match(reg);   
    153.     if(r==null)return false;   
    154.     r[2]=r[2]-1;   
    155.     var d= new Date(r[1],r[2],r[3],r[4],r[5],r[6]);   
    156.     if(d.getFullYear()!=r[1])return false;   
    157.     if(d.getMonth()!=r[2])return false;   
    158.     if(d.getDate()!=r[3])return false;   
    159.     if(d.getHours()!=r[4])return false;   
    160.     if(d.getMinutes()!=r[5])return false;   
    161.     if(d.getSeconds()!=r[6])return false;   
    162.     return true;   
    163. }   
    164.   
    165. //+---------------------------------------------------  
    166. //| 把日期分割成數(shù)組  
    167. //+---------------------------------------------------  
    168. Date.prototype.toArray = function()  
    169. {   
    170.     var myDate = this;  
    171.     var myArray = Array();  
    172.     myArray[0] = myDate.getFullYear();  
    173.     myArray[1] = myDate.getMonth();  
    174.     myArray[2] = myDate.getDate();  
    175.     myArray[3] = myDate.getHours();  
    176.     myArray[4] = myDate.getMinutes();  
    177.     myArray[5] = myDate.getSeconds();  
    178.     return myArray;  
    179. }  
    180.   
    181. //+---------------------------------------------------  
    182. //| 取得日期數(shù)據(jù)信息  
    183. //| 參數(shù) interval 表示數(shù)據(jù)類型  
    184. //| y 年 m月 d日 w星期 ww周 h時 n分 s秒  
    185. //+---------------------------------------------------  
    186. Date.prototype.DatePart = function(interval)  
    187. {   
    188.     var myDate = this;  
    189.     var partStr='';  
    190.     var Week = ['日','一','二','三','四','五','六'];  
    191.     switch (interval)  
    192.     {   
    193.         case 'y' :partStr = myDate.getFullYear();break;  
    194.         case 'm' :partStr = myDate.getMonth()+1;break;  
    195.         case 'd' :partStr = myDate.getDate();break;  
    196.         case 'w' :partStr = Week[myDate.getDay()];break;  
    197.         case 'ww' :partStr = myDate.WeekNumOfYear();break;  
    198.         case 'h' :partStr = myDate.getHours();break;  
    199.         case 'n' :partStr = myDate.getMinutes();break;  
    200.         case 's' :partStr = myDate.getSeconds();break;  
    201.     }  
    202.     return partStr;  
    203. }  
    204.   
    205. //+---------------------------------------------------  
    206. //| 取得當(dāng)前日期所在月的最大天數(shù)  
    207. //+---------------------------------------------------  
    208. Date.prototype.MaxDayOfDate = function()  
    209. {   
    210.     var myDate = this;  
    211.     var ary = myDate.toArray();  
    212.     var date1 = (new Date(ary[0],ary[1]+1,1));  
    213.     var date2 = date1.dateAdd(1,'m',1);  
    214.     var result = dateDiff(date1.Format('yyyy-MM-dd'),date2.Format('yyyy-MM-dd'));  
    215.     return result;  
    216. }  
    217.   
    218. //+---------------------------------------------------  
    219. //| 取得當(dāng)前日期所在周是一年中的第幾周  
    220. //+---------------------------------------------------  
    221. Date.prototype.WeekNumOfYear = function()  
    222. {   
    223.     var myDate = this;  
    224.     var ary = myDate.toArray();  
    225.     var year = ary[0];  
    226.     var month = ary[1]+1;  
    227.     var day = ary[2];  
    228.     document.write('< script language=VBScript\> \n');  
    229.     document.write('myDate = DateValue(''+month+'-'+day+'-'+year+'') \n');  
    230.     document.write('result = DatePart('ww', myDate) \n');  
    231.     document.write(' \n');  
    232.     return result;  
    233. }  
    234.   
    235. //+---------------------------------------------------  
    236. //| 字符串轉(zhuǎn)成日期類型   
    237. //| 格式 MM/dd/YYYY MM-dd-YYYY YYYY/MM/dd YYYY-MM-dd  
    238. //+---------------------------------------------------  
    239. function StringToDate(DateStr)  
    240. {   
    241.   
    242.     var converted = Date.parse(DateStr);  
    243.     var myDate = new Date(converted);  
    244.     if (isNaN(myDate))  
    245.     {   
    246.         //var delimCahar = DateStr.indexOf('/')!=-1?'/':'-';  
    247.         var arys= DateStr.split('-');  
    248.         myDate = new Date(arys[0],--arys[1],arys[2]);  
    249.     }  
    250.     return myDate;  
    251. }  


    semovy 2008-01-02 10:36 發(fā)表評論
    ]]>
    select innerHTML在IE和FireFox下處理http://www.aygfsteel.com/WshmAndLily/articles/172074.htmlsemovysemovyWed, 02 Jan 2008 01:37:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/172074.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/172074.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/172074.html#Feedback1http://www.aygfsteel.com/WshmAndLily/comments/commentRss/172074.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/172074.html在前一段時間,做ajax的時候,碰到了這樣的問題:

    <form name=form1 action='#' method=post>
    <select name=typelist id=typelist>
    <option value=0>=請選擇=</option>
    </select>
    </form>


    下面是一個jscript函數(shù)

    <script language=javascript type='text/javascript'>
    function getTypeById(){
        var obj = document.getElementById('typelist');
        var result = "";
        for(var i = 1; i < 6; i++ ){
           result += "<option value="+i+">"+i+"</option>" ;
        }
       
    obj.innerHTML = result;
    }
    </script>


    出現(xiàn)的結(jié)果<select></select>中的內(nèi)容在IE下運(yùn)行為空白,而在FireFOx中運(yùn)行正確。

    針對這樣情況的解決辦法是換另一種方法做

    function getTypeById(id){
        var s=document.getElementById(id);
        for(var i = 1; i < 6; i++ ){
           s.options[s.options.length] = new Option(i,i);
        }  
    }



    semovy 2008-01-02 09:37 發(fā)表評論
    ]]>
    常用JS加密編碼算法 轉(zhuǎn)[千里冰封]http://www.aygfsteel.com/WshmAndLily/articles/160914.htmlsemovysemovyFri, 16 Nov 2007 01:41:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/160914.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/160914.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/160914.html#Feedback0http://www.aygfsteel.com/WshmAndLily/comments/commentRss/160914.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/160914.htmlfunction URLEncode(Str){   if(Str==null||Str=="")   ...  閱讀全文

    semovy 2007-11-16 09:41 發(fā)表評論
    ]]>
    js控制input輸入字符限制http://www.aygfsteel.com/WshmAndLily/articles/153595.htmlsemovysemovyWed, 17 Oct 2007 08:01:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/153595.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/153595.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/153595.html#Feedback0http://www.aygfsteel.com/WshmAndLily/comments/commentRss/153595.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/153595.htmlENTER鍵可以讓光標(biāo)移到下一個輸入框
    <input onkeydown="if(event.keyCode==13)event.keyCode=9" >

    只能是中文
    <input onkeyup="value=value.replace(/[ -~]/g,'')" onkeydown="if(event.keyCode==13)event.keyCode=9">

    屏蔽輸入法
    <input style="ime-mode:disabled" onkeydown="if(event.keyCode==13)event.keyCode=9">

    只能輸入英文和數(shù)字
    <input onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" onkeydown="if(event.keyCode==13)event.keyCode=9">

    只能是數(shù)字
    <input onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))">

    只能顯示,不能修改
    <input readonly value="只能顯示,不能修改">

    只能書數(shù)字,判斷按鍵的值
    <script   language=javascript>
    function   onlyNum()
    {
    if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)||(event.keyCode==8)))
    event.returnValue=false;
    }
    </script>
    <input   onkeydown="onlyNum();">  



    semovy 2007-10-17 16:01 發(fā)表評論
    ]]>
    js常用函數(shù)屬性事件集http://www.aygfsteel.com/WshmAndLily/articles/151897.htmlsemovysemovyWed, 10 Oct 2007 15:23:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/151897.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/151897.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/151897.html#Feedback0http://www.aygfsteel.com/WshmAndLily/comments/commentRss/151897.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/151897.html1.document.write(""); 輸出語句
    2.JS中的注釋為//
    3.傳統(tǒng)的HTML文檔順序是:document->html->(head,body)
    4.一個瀏覽器窗口中的DOM順序是:window->(navigator,screen,history,location,document)
    5.得到表單中元素的名稱和值:document.getElementById("表單中元素的ID號").name(或value)
    6.一個小寫轉(zhuǎn)大寫的JS: document.getElementById("output").value = document.getElementById("input").value.toUpperCase();
    7.JS中的值類型:String,Number,Boolean,Null,Object,Function
    8.JS中的字符型轉(zhuǎn)換成數(shù)值型:parseInt(),parseFloat()
    9.JS中的數(shù)字轉(zhuǎn)換成字符型:(""+變量)
    10.JS中的取字符串長度是:(length)
    11.JS中的字符與字符相連接使用+號.
    12.JS中的比較操作符有:==等于,!=不等于,>,>=,<.<=
    13.JS中聲明變量使用:var來進(jìn)行聲明
    14.JS中的判斷語句結(jié)構(gòu):if(condition){}else{}
    15.JS中的循環(huán)結(jié)構(gòu):for([initial expression];[condition];[upadte expression]) {inside loop}
    16.循環(huán)中止的命令是:break
    17.JS中的函數(shù)定義:function functionName([parameter],...){statement[s]}
    18.當(dāng)文件中出現(xiàn)多個form表單時.可以用document.forms[0],document.forms[1]來代替.
    19.窗口:打開窗口window.open(), 關(guān)閉一個窗口:window.close(), 窗口本身:self
    20.狀態(tài)欄的設(shè)置:window.status="字符";
    21.彈出提示信息:window.alert("字符");
    22.彈出確認(rèn)框:window.confirm();
    23.彈出輸入提示框:window.prompt();
    24.指定當(dāng)前顯示鏈接的位置:window.location.href="URL"
    25.取出窗體中的所有表單的數(shù)量:document.forms.length
    26.關(guān)閉文檔的輸出流:document.close();
    27.字符串追加連接符:+=
    28.創(chuàng)建一個文檔元素:document.createElement(),document.createTextNode()
    29.得到元素的方法:document.getElementById()
    30.設(shè)置表單中所有文本型的成員的值為空:
    var form = window.document.forms[0]
    for (var i = 0; i<form.elements.length;i++){
          if (form.elements[i].type == "text"){
              form.elements[i].value = "";
          }
    }
    31.復(fù)選按鈕在JS中判斷是否選中:document.forms[0].checkThis.checked (checked屬性代表為是否選中返回TRUE或FALSE)
    32.單選按鈕組(單選按鈕的名稱必須相同):取單選按鈕組的長度document.forms[0].groupName.length
    33.單選按鈕組判斷是否被選中也是用checked.
    34.下拉列表框的值:document.forms[0].selectName.options[n].value (n有時用下拉列表框名稱加上.selectedIndex來確定被選中的值)
    35.字符串的定義:var myString = new String("This is lightsword");
    36.字符串轉(zhuǎn)成大寫:string.toUpperCase(); 字符串轉(zhuǎn)成小寫:string.toLowerCase();
    37.返回字符串2在字符串1中出現(xiàn)的位置:String1.indexOf("String2")!=-1則說明沒找到.
    38.取字符串中指定位置的一個字符:StringA.charAt(9);
    39.取出字符串中指定起點(diǎn)和終點(diǎn)的子字符串:stringA.substring(2,6);
    40.數(shù)學(xué)函數(shù):Math.PI(返回圓周率),Math.SQRT2(返回開方),Math.max(value1,value2)返回兩個數(shù)中的最在值,Math.pow(value1,10)返回value1的十次方,Math.round(value1)四舍五入函數(shù),Math.floor(Math.random()*(n+1))返回隨機(jī)數(shù)
    41.定義日期型變量:var today = new Date();
    42.日期函數(shù)列表:dateObj.getTime()得到時間,dateObj.getYear()得到年份,dateObj.getFullYear()得到四位的年份,dateObj.getMonth()得到月份,dateObj.getDate()得到日,dateObj.getDay()得到日期幾,dateObj.getHours()得到小時,dateObj.getMinutes()得到分,dateObj.getSeconds()得到秒,dateObj.setTime(value)設(shè)置時間,dateObj.setYear(val)設(shè)置年,dateObj.setMonth(val)設(shè)置月,dateObj.setDate(val)設(shè)置日,dateObj.setDay(val)設(shè)置星期幾,dateObj.setHours設(shè)置小時,dateObj.setMinutes(val)設(shè)置分,dateObj.setSeconds(val)設(shè)置秒   [注意:此日期時間從0開始計]
    43.FRAME的表示方式: [window.]frames[n].ObjFuncVarName,frames["frameName"].ObjFuncVarName,frameName.ObjFuncVarName
    44.parent代表父親對象,top代表最頂端對象
    45.打開子窗口的父窗口為:opener
    46.表示當(dāng)前所屬的位置:this
    47.當(dāng)在超鏈接中調(diào)用JS函數(shù)時用:(Javascript:)來開頭后面加函數(shù)名
    48.在老的瀏覽器中不執(zhí)行此JS:<!--       //-->
    49.引用一個文件式的JS:<script type="text/Javascript" src="aaa.js"></script>
    50.指定在不支持腳本的瀏覽器顯示的HTML:<noscript></noscript>
    51.當(dāng)超鏈和ONCLICK事件都有時,則老版本的瀏覽器轉(zhuǎn)向a.html,否則轉(zhuǎn)向b.html.例:<a href="a.html" onclick="location.href='b.html';return false">dfsadf</a>
    52.JS的內(nèi)建對象有:Array,Boolean,Date,Error,EvalError,Function,Math,Number,Object,RangeError,ReferenceError,RegExp,String,SyntaxError,TypeError,URIError
    53.JS中的換行:\n
    54.窗口全屏大小:<script>function fullScreen(){ this.moveTo(0,0);this.outerWidth=screen.availWidth;this.outerHeight=screen.availHeight;}window.maximize=fullScreen;</script>
    55.JS中的all代表其下層的全部元素

    56.JS中的焦點(diǎn)順序:document.getElementByid("表單元素").tabIndex = 1
    57.innerHTML的值是表單元素的值:如<p id="para">"how are <em>you</em>"</p>,則innerHTML的值就是:how are <em>you</em>
    58.innerTEXT的值和上面的一樣,只不過不會把<em>這種標(biāo)記顯示出來.
    59.contentEditable可設(shè)置元素是否可被修改,isContentEditable返回是否可修改的狀態(tài).
    60.isDisabled判斷是否為禁止?fàn)顟B(tài).disabled設(shè)置禁止?fàn)顟B(tài)
    61.length取得長度,返回整型數(shù)值
    62.addBehavior()是一種JS調(diào)用的外部函數(shù)文件其擴(kuò)展名為.htc
    63.window.focus()使當(dāng)前的窗口在所有窗口之前.
    64.blur()指失去焦點(diǎn).與FOCUS()相反.
    65.select()指元素為選中狀態(tài).
    66.防止用戶對文本框中輸入文本:onfocus="this.blur()"
    67.取出該元素在頁面中出現(xiàn)的數(shù)量:document.all.tags("div(或其它HTML標(biāo)記符)").length
    68.JS中分為兩種窗體輸出:模態(tài)和非模態(tài).window.showModaldialog(),window.showModeless()
    69.狀態(tài)欄文字的設(shè)置:window.status='文字',默認(rèn)的狀態(tài)欄文字設(shè)置:window.defaultStatus = '文字.';
    70.添加到收藏夾:external.AddFavorite("
    http://www.xrss.cn","jaskdlf");
    71.JS中遇到腳本錯誤時不做任何操作:window.onerror = doNothing; 指定錯誤句柄的語法為:window.onerror = handleError;
    72.JS中指定當(dāng)前打開窗口的父窗口:window.opener,支持opener.opener...的多重繼續(xù).
    73.JS中的self指的是當(dāng)前的窗口
    74.JS中狀態(tài)欄顯示內(nèi)容:window.status="內(nèi)容"
    75.JS中的top指的是框架集中最頂層的框架
    76.JS中關(guān)閉當(dāng)前的窗口:window.close();
    77.JS中提出是否確認(rèn)的框:if(confirm("Are you sure?")){alert("ok");}else{alert("Not Ok");}
    78.JS中的窗口重定向:window.navigate("
    http://www.sina.com.cn");
    79.JS中的打印:window.print()
    80.JS中的提示輸入框:window.prompt("message","defaultReply");
    81.JS中的窗口滾動條:window.scroll(x,y)
    82.JS中的窗口滾動到位置:window.scrollby
    83.JS中設(shè)置時間間隔:setInterval("expr",msecDelay)或setInterval(funcRef,msecDelay)或setTimeout
    84.JS中的模態(tài)顯示在IE4+行,在NN中不行:showModalDialog("URL"[,arguments][,features]);
    85.JS中的退出之前使用的句柄:function verifyClose(){event.returnValue="we really like you and hope you will stay longer.";}}   window.onbeforeunload=verifyClose;
    86.當(dāng)窗體第一次調(diào)用時使用的文件句柄:onload()
    87.當(dāng)窗體關(guān)閉時調(diào)用的文件句柄:onunload()
    88.window.location的屬性: protocol(http:),hostname(
    www.example.com),port(80),host(www.example.com:80),pathname("/a/a.html"),hash("#giantGizmo",指跳轉(zhuǎn)到相應(yīng)的錨記),href(全部的信息)
    89.window.location.reload()刷新當(dāng)前頁面.
    89-1.parent.location.reload()刷新父親對象(用于框架)
    89-2.opener.location.reload()刷新父窗口對象(用于單開窗口)
    89-3.top.location.reload()刷新最頂端對象(用于多開窗口)
    90.window.history.back()返回上一頁,window.history.forward()返回下一頁,window.history.go(返回第幾頁,也可以使用訪問過的URL)
    91.document.write()不換行的輸出,document.writeln()換行輸出
    92.document.body.noWrap=true;防止鏈接文字折行.
    93.變量名.charAt(第幾位),取該變量的第幾位的字符.
    94."abc".charCodeAt(第幾個),返回第幾個字符的ASCii碼值.
    95.字符串連接:string.concat(string2),或用+=進(jìn)行連接
    96.變量.indexOf("字符",起始位置),返回第一個出現(xiàn)的位置(從0開始計算)
    97.string.lastIndexOf(searchString[,startIndex])最后一次出現(xiàn)的位置.
    98.string.match(regExpression),判斷字符是否匹配.
    99.string.replace(regExpression,replaceString)替換現(xiàn)有字符串.
    100.string.split(分隔符)返回一個數(shù)組存儲值.
    101.string.substr(start[,length])取從第幾位到指定長度的字符串.
    102.string.toLowerCase()使字符串全部變?yōu)樾?
    103.string.toUpperCase()使全部字符變?yōu)榇髮?
    104.parseInt(string[,radix(代表進(jìn)制)])強(qiáng)制轉(zhuǎn)換成整型.
    105.parseFloat(string[,radix])強(qiáng)制轉(zhuǎn)換成浮點(diǎn)型.
    106.isNaN(變量):測試是否為數(shù)值型.
    107.定義常量的關(guān)鍵字:const,定義變量的關(guān)鍵字:var



    semovy 2007-10-10 23:23 發(fā)表評論
    ]]>
    兼容于ie,firefox,netscape的等比例圖片本地預(yù)覽的javascript實(shí)現(xiàn)http://www.aygfsteel.com/WshmAndLily/articles/151410.htmlsemovysemovyTue, 09 Oct 2007 07:11:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/151410.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/151410.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/151410.html#Feedback12http://www.aygfsteel.com/WshmAndLily/comments/commentRss/151410.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/151410.html <head>
    <title>兼容于ie,firefox,netscape的等比例圖片本地預(yù)覽的javascript實(shí)現(xiàn)</title>
    <meta http-equie="keywords" content="兼容ie,firefox,netscape,等比例圖片,javascript">
    <script type="text/javascript">
    /*
     兼容于ie,firefox,netscape的等比例圖片本地預(yù)覽的javascript實(shí)現(xiàn)
     author:semovy@gmail.com
     date:14:39 上午 2007-10-9
     @param:targetImg string id 待顯示等比例調(diào)整過的目標(biāo)元素的id字符串
     @param:imgSrc string src 等處理的圖片源路徑字符串
     @param:fitWidth int 等顯示圖片的最大寬度
     @param:fitHeight int 等顯示圖片的最大高度
    */
    function resizeImage(targetImg,imgSrc,fitWidth,fitHeight)
    {
     var imgSrc = "file:///" + imgSrc.replace(/\\/g,"/");//本地路徑c:\a.jpg,而ff,ns不支持,所以替換成file:///c:/a.jpg這種形式
     var img = document.getElementById(targetImg);//獲取目標(biāo)圖片元素容器
     var tempImg = new Image();//建立臨時圖片對象
     tempImg.src = imgSrc;//給臨時圖片對象賦予圖片源
     var scale=1.0;//圖片度高比例因子.
     var width=0,height=0;
     
     /*firefox實(shí)現(xiàn)了complete屬性,而ie實(shí)現(xiàn)了complete屬性和readyState屬性
     但是兩者對屬性的定義好像不同:
     firefox: 一個圖像被下載完畢,complete屬性就是true,沒有下載完畢則為false
     ie:一個圖像沒有被下載完畢,則readyState屬性為uninitialized,complete屬性是false.當(dāng)下載完畢時,
     readyState為complete,而如果此時圖片還沒有顯示,complete為false,顯示以后(display:block)此屬性才變成true
     */
     
     if(document.all)//如果是ie
     {
      if(tempImg.readyState=='complete')
      {
       width = tempImg.width;//獲取源圖片寬,高
       height = tempImg.height;
      }
     }
     else(tempImg.complete)//fire fox ,netscape
     {
      width = tempImg.width;
      height = tempImg.height;
     }
     scale = width/height;//寬度比例因子
     if(width > fitWidth)//等比例調(diào)整
     {
      width = fitWidth;
      height = width/scale; 
      if(height > fitHeight)
      {
       height = fitHeight;
       width = height*scale;
      }
     }
     if(height > fitHeight)
     {
      height = fitHeight;
      width = height*scale;
     }
     img.width = width;//調(diào)整后的寬,高
     img.height = height;
     img.src = imgSrc;
     img.style.display="";//顯示圖片
    }
    </script>
    </head>
    <body>
    <!--目標(biāo)顯示圖片組件,初始化為隱藏格式-->
    <img id="img" style="display:none">
    <input type="file" id="imgFile" onchange="resizeImage('img',this.value,150,150)">
    </body>
    </html>

    semovy 2007-10-09 15:11 發(fā)表評論
    ]]>
    鼠標(biāo)滑過鏈接出現(xiàn)的對話框式提示效果http://www.aygfsteel.com/WshmAndLily/articles/148788.htmlsemovysemovyThu, 27 Sep 2007 09:26:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/148788.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/148788.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/148788.html#Feedback0http://www.aygfsteel.com/WshmAndLily/comments/commentRss/148788.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/148788.html <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>無標(biāo)題文檔</title>
    <script type="text/javascript">
    function enableTooltips(id){
    var links,i,h;
    if(!document.getElementById || !document.getElementsByTagName) return;
    AddCss();
    h=document.createElement("span");
    h.id="btc";
    h.setAttribute("id","btc");
    h.style.position="absolute";
    document.getElementsByTagName("body")[0].appendChild(h);
    if(id==null) links=document.getElementsByTagName("a");
    else links=document.getElementById(id).getElementsByTagName("a");
    for(i=0;i<links.length;i++){
    Prepare(links[i]);
    }
    }function Prepare(el){
    var tooltip,t,b,s,l;
    t=el.getAttribute("title");
    if(t==null || t.length==0) t="link:";
    el.removeAttribute("title");
    tooltip=CreateEl("span","tooltip");
    s=CreateEl("span","top");
    s.appendChild(document.createTextNode(t));
    tooltip.appendChild(s);
    b=CreateEl("b","bottom");
    l=el.getAttribute("href");
    if(l.length>30) l=l.substr(0,27)+"...";
    b.appendChild(document.createTextNode(l));
    tooltip.appendChild(b);
    setOpacity(tooltip);
    el.tooltip=tooltip;
    el.onmouseover=showTooltip;
    el.onmouseout=hideTooltip;
    el.onmousemove=Locate;
    }function showTooltip(e){
    document.getElementById("btc").appendChild(this.tooltip);
    Locate(e);
    }function hideTooltip(e){
    var d=document.getElementById("btc");
    if(d.childNodes.length>0) d.removeChild(d.firstChild);
    }function setOpacity(el){
    el.style.filter="alpha(opacity:95)";
    el.style.KHTMLOpacity="0.95";
    el.style.MozOpacity="0.95";
    el.style.opacity="0.95";
    }function CreateEl(t,c){
    var x=document.createElement(t);
    x.className=c;
    x.style.display="block";
    return(x);
    }function AddCss(){
    var l=CreateEl("link");
    l.setAttribute("type","text/css");
    l.setAttribute("rel","stylesheet");
    l.setAttribute("href","?.css");
    l.setAttribute("media","screen");
    document.getElementsByTagName("head")[0].appendChild(l);
    }function Locate(e){
    var posx=0,posy=0;
    if(e==null) e=window.event;
    if(e.pageX || e.pageY){
    posx=e.pageX; posy=e.pageY;
    }
    else if(e.clientX || e.clientY){
    if(document.documentElement.scrollTop){
    posx=e.clientX+document.documentElement.scrollLeft;
    posy=e.clientY+document.documentElement.scrollTop;
    }
    else{
    posx=e.clientX+document.body.scrollLeft;
    posy=e.clientY+document.body.scrollTop;
    }
    }
    document.getElementById("btc").style.top=(posy+10)+"px";
    document.getElementById("btc").style.left=(posx-20)+"px";
    }
    </script>
    <script type="text/javascript">
    window.onload=function(){enableTooltips()};
    </script>
    <style type="text/css">
    body{font: 76%/1.5 Arial,sans-serif;background: #FFF;color: #333}
    div#container{width: 500px;margin:0 auto}
    h1{color: #3CA3FF;margin: 1em 0 0;letter-spacing: -2px}
    p{margin: 0 0 1.7em}
    a{color: #F60;font-weight:bold}
    a:hover{color: #F00}
    .tooltip{
    width: 200px; color:#000;
    font:lighter 11px/1.3 Arial,sans-serif;
    text-decoration:none;text-align:center}.tooltip span.top{padding: 30px 8px 0;
         background: url(http://www.makewing.com/images/uppic/200708171844190.gif) no-repeat top}.tooltip b.bottom{padding:3px 8px 15px;color: #548912;
         background: url(http://www.makewing.com/images/uppic/200708171844190.gif) no-repeat bottom}
    </style>
    </head>
    <body>
    <div id="container">
    <p><a title="Com@'s space">My space</a></p>
    </div>
    </body>
    </html>

    semovy 2007-09-27 17:26 發(fā)表評論
    ]]>
    一個精美強(qiáng)大的JS日歷http://www.aygfsteel.com/WshmAndLily/articles/148786.htmlsemovysemovyThu, 27 Sep 2007 09:19:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/148786.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/148786.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/148786.html#Feedback0http://www.aygfsteel.com/WshmAndLily/comments/commentRss/148786.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/148786.html<html>

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>本地計算機(jī)時間</title>
    </head>

    <body>


    <SCRIPT language=JavaScript>
    <!--
    /*****************************************************************************
                                       日期資料
    *****************************************************************************/

    var lunarInfo=new Array(
    0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2,
    0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977,
    0x04970,0x0a4b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,0x09570,0x052f2,0x04970,
    0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x186e3,0x092e0,0x1c8d7,0x0c950,
    0x0d4a0,0x1d8a6,0x0b550,0x056a0,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557,
    0x06ca0,0x0b550,0x15355,0x04da0,0x0a5d0,0x14573,0x052d0,0x0a9a8,0x0e950,0x06aa0,
    0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,
    0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b5a0,0x195a6,
    0x095b0,0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570,
    0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,0x092e0,
    0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5,
    0x0a950,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x0a5b0,0x15176,0x052b0,0x0a930,
    0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530,
    0x05aa0,0x076a3,0x096d0,0x04bd7,0x04ad0,0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45,
    0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0)

    var solarMonth=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
    var Gan=new Array("甲","乙","丙","丁","戊","己","庚","辛","壬","癸");
    var Zhi=new Array("子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥");
    var Animals=new Array("鼠","牛","虎","兔","龍","蛇","馬","羊","猴","雞","狗","豬");
    var solarTerm = new Array("小寒","大寒","立春","雨水","驚蟄","春分","清明","谷雨","立夏","小滿","芒種","夏至","小暑","大暑","立秋","處暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至")
    var sTermInfo = new Array(0,21208,42467,63836,85337,107014,128867,150921,173149,195551,218072,240693,263343,285989,308563,331033,353350,375494,397447,419210,440795,462224,483532,504758)
    var nStr1 = new Array('日','一','二','三','四','五','六','七','八','九','十')
    var nStr2 = new Array('初','十','廿','卅',' ')
    var monthName = new Array("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC");

    //國歷節(jié)日 *表示放假日
    var sFtv = new Array(
    "0101*元旦",
    "0214 情人節(jié)",
    "0303 我生日",
    "0308 婦女節(jié)",
    "0312 植樹節(jié)",
    "0315 消費(fèi)者權(quán)益日",
    "0317 St. Patrick's",
    "0401 愚人節(jié)",
    "0501 勞動節(jié)",
    "0504 青年節(jié)",
    "0512 護(hù)士節(jié)",
    "0512 茵生日",
    "0601 兒童節(jié)",
    "0614 Flag Day",
    "0701 建黨節(jié) 香港回歸紀(jì)念",
    "0703 炎黃在線誕辰",
    "0718 托普誕辰",
    "0801 建軍節(jié)",
    "0808 父親節(jié)",
    "0909 毛澤東逝世紀(jì)念",
    "0910 教師節(jié)",
    "0928 孔子誕辰",
    "1001*國慶節(jié)",
    "1006 老人節(jié)",
    "1024 聯(lián)合國日",
    "1111 Veteran's / Remembrance Day",
    "1112 孫中山誕辰紀(jì)念",
    "1220 澳門回歸紀(jì)念",
    "1225 Christmas Day",
    "1226 毛澤東誕辰紀(jì)念")

    //農(nóng)歷節(jié)日 *表示放假日
    var lFtv = new Array(
    "0101*春節(jié)",
    "0115 元宵節(jié)",
    "0505 端午節(jié)",
    "0707 七夕情人節(jié)",
    "0715 中元節(jié)",
    "0815 中秋節(jié)",
    "0909 重陽節(jié)",
    "1208 臘八節(jié)",
    "1224 小年",
    "0100*除夕")

    //某月的第幾個星期幾
    var wFtv = new Array(
    "0131 Martin Luther King Day",
    "0231 President's Day",
    "0520 母親節(jié)",
    "0530 Armed Forces Day",
    "0531 Victoria Day",
    "0716 合作節(jié)",
    "0730 被奴役國家周",
    "0811 Civic Holiday",
    "0911 Labor Holiday",
    "1021 Columbus Day",
    "1144 Thanksgiving")


    /*****************************************************************************
                                          日期計算
    *****************************************************************************/

    //====================================== 傳回農(nóng)歷 y年的總天數(shù)
    function lYearDays(y) {
       var i, sum = 348
       for(i=0x8000; i>0x8; i>>=1) sum += (lunarInfo[y-1900] & i)? 1: 0
       return(sum+leapDays(y))
    }

    //====================================== 傳回農(nóng)歷 y年閏月的天數(shù)
    function leapDays(y) {
       if(leapMonth(y))  return((lunarInfo[y-1900] & 0x10000)? 30: 29)
       else return(0)
    }

    //====================================== 傳回農(nóng)歷 y年閏哪個月 1-12 , 沒閏傳回 0
    function leapMonth(y) {
       return(lunarInfo[y-1900] & 0xf)
    }

    //====================================== 傳回農(nóng)歷 y年m月的總天數(shù)
    function monthDays(y,m) {
       return( (lunarInfo[y-1900] & (0x10000>>m))? 30: 29 )
    }

    //====================================== 算出農(nóng)歷, 傳入日期物件, 傳回農(nóng)歷日期物件
    //                                       該物件屬性有 .year .month .day .isLeap .yearCyl .dayCyl .monCyl
    function Lunar(objDate) {

       var i, leap=0, temp=0
       var baseDate = new Date(1900,0,31)
       var offset   = (objDate - baseDate)/86400000

       this.dayCyl = offset + 40
       this.monCyl = 14

       for(i=1900; i<2050 && offset>0; i++) {
          temp = lYearDays(i)
          offset -= temp
          this.monCyl += 12
       }

       if(offset<0) {
          offset += temp;
          i--;
          this.monCyl -= 12
       }

       this.year = i
       this.yearCyl = i-1864

       leap = leapMonth(i) //閏哪個月
       this.isLeap = false

       for(i=1; i<13 && offset>0; i++) {
          //閏月
          if(leap>0 && i==(leap+1) && this.isLeap==false)
             { --i; this.isLeap = true; temp = leapDays(this.year); }
          else
             { temp = monthDays(this.year, i); }

          //解除閏月
          if(this.isLeap==true && i==(leap+1)) this.isLeap = false

          offset -= temp
          if(this.isLeap == false) this.monCyl ++
       }

       if(offset==0 && leap>0 && i==leap+1)
          if(this.isLeap)
             { this.isLeap = false; }
          else
             { this.isLeap = true; --i; --this.monCyl;}

       if(offset<0){ offset += temp; --i; --this.monCyl; }

       this.month = i
       this.day = offset + 1
    }

    //==============================傳回國歷 y年某m+1月的天數(shù)
    function solarDays(y,m) {
       if(m==1)
          return(((y%4 == 0) && (y%100 != 0) || (y%400 == 0))? 29: 28)
       else
          return(solarMonth[m])
    }
    //============================== 傳入 offset 傳回干支, 0=甲子
    function cyclical(num) {
       return(Gan[num%10]+Zhi[num%12])
    }

    //============================== 月歷屬性
    function calElement(sYear,sMonth,sDay,week,lYear,lMonth,lDay,isLeap,cYear,cMonth,cDay) {

          this.isToday    = false;
          //國歷
          this.sYear      = sYear;
          this.sMonth     = sMonth;
          this.sDay       = sDay;
          this.week       = week;
          //農(nóng)歷
          this.lYear      = lYear;
          this.lMonth     = lMonth;
          this.lDay       = lDay;
          this.isLeap     = isLeap;
          //干支
          this.cYear      = cYear;
          this.cMonth     = cMonth;
          this.cDay       = cDay;

          this.color      = '';

          this.lunarFestival = ''; //農(nóng)歷節(jié)日
          this.solarFestival = ''; //國歷節(jié)日
          this.solarTerms    = ''; //節(jié)氣

    }

    //===== 某年的第n個節(jié)氣為幾日(從0小寒起算)
    function sTerm(y,n) {
       var offDate = new Date( ( 31556925974.7*(y-1900) + sTermInfo[n]*60000  ) + Date.UTC(1900,0,6,2,5) )
       return(offDate.getUTCDate())
    }

    //============================== 傳回月歷物件 (y年,m+1月)
    function calendar(y,m) {

       var sDObj, lDObj, lY, lM, lD=1, lL, lX=0, tmp1, tmp2
       var lDPOS = new Array(3)
       var n = 0
       var firstLM = 0

       sDObj = new Date(y,m,1)            //當(dāng)月一日日期

       this.length    = solarDays(y,m)    //國歷當(dāng)月天數(shù)
       this.firstWeek = sDObj.getDay()    //國歷當(dāng)月1日星期幾


       for(var i=0;i<this.length;i++) {

          if(lD>lX) {
             sDObj = new Date(y,m,i+1)    //當(dāng)月一日日期
             lDObj = new Lunar(sDObj)     //農(nóng)歷
             lY    = lDObj.year           //農(nóng)歷年
             lM    = lDObj.month          //農(nóng)歷月
             lD    = lDObj.day            //農(nóng)歷日
             lL    = lDObj.isLeap         //農(nóng)歷是否閏月
             lX    = lL? leapDays(lY): monthDays(lY,lM) //農(nóng)歷當(dāng)月最後一天

             if(n==0) firstLM = lM
             lDPOS[n++] = i-lD+1
          }

          //sYear,sMonth,sDay,week,
          //lYear,lMonth,lDay,isLeap,
          //cYear,cMonth,cDay
          this[i] = new calElement(y, m+1, i+1, nStr1[(i+this.firstWeek)%7],
                                   lY, lM, lD++, lL,
                                   cyclical(lDObj.yearCyl) ,cyclical(lDObj.monCyl), cyclical(lDObj.dayCyl++) )


          if((i+this.firstWeek)%7==0)   this[i].color = 'red'  //周日顏色
          if((i+this.firstWeek)%14==13) this[i].color = 'red'  //周休二日顏色
       }

       //節(jié)氣
       tmp1=sTerm(y,m*2  )-1
       tmp2=sTerm(y,m*2+1)-1
       this[tmp1].solarTerms = solarTerm[m*2]
       this[tmp2].solarTerms = solarTerm[m*2+1]
       if(m==3) this[tmp1].color = 'red' //清明顏色

       //國歷節(jié)日
       for(i in sFtv)
          if(sFtv[i].match(/^(\d{2})(\d{2})([\s\*])(.+)$/))
             if(Number(RegExp.$1)==(m+1)) {
                this[Number(RegExp.$2)-1].solarFestival += RegExp.$4 + ' '
                if(RegExp.$3=='*') this[Number(RegExp.$2)-1].color = 'red'
             }

       //月周節(jié)日
       for(i in wFtv)
          if(wFtv[i].match(/^(\d{2})(\d)(\d)([\s\*])(.+)$/))
             if(Number(RegExp.$1)==(m+1)) {
                tmp1=Number(RegExp.$2)
                tmp2=Number(RegExp.$3)
                this[((this.firstWeek>tmp2)?7:0) + 7*(tmp1-1) + tmp2 - this.firstWeek].solarFestival += RegExp.$5 + ' '
             }

       //農(nóng)歷節(jié)日
       for(i in lFtv)
          if(lFtv[i].match(/^(\d{2})(.{2})([\s\*])(.+)$/)) {
             tmp1=Number(RegExp.$1)-firstLM
             if(tmp1==-11) tmp1=1
             if(tmp1 >=0 && tmp1<n) {
                tmp2 = lDPOS[tmp1] + Number(RegExp.$2) -1
                if( tmp2 >= 0 && tmp2<this.length) {
                   this[tmp2].lunarFestival += RegExp.$4 + ' '
                   if(RegExp.$3=='*') this[tmp2].color = 'red'
                }
             }
          }

       //黑色星期五
       if((this.firstWeek+12)%7==5)
          this[12].solarFestival += '黑色星期五 '

       //今日
       if(y==tY && m==tM) this[tD-1].isToday = true;

    }

    //====================== 中文日期
    function cDay(d){
       var s;

       switch (d) {
          case 10:
             s = '初十'; break;
          case 20:
             s = '二十'; break;
             break;
          case 30:
             s = '三十'; break;
             break;
          default :
             s = nStr2[Math.floor(d/10)];
             s += nStr1[d%10];
       }
       return(s);
    }

    ///////////////////////////////////////////////////////////////////////////////

    var cld;

    function drawCld(SY,SM) {
       var i,sD,s,size;
       cld = new calendar(SY,SM);

       if(SY>1874 && SY<1909) yDisplay = '光緒' + (((SY-1874)==1)?'元':SY-1874)
       if(SY>1908 && SY<1912) yDisplay = '宣統(tǒng)' + (((SY-1908)==1)?'元':SY-1908)
       if(SY>1911 && SY<1950) yDisplay = '民國' + (((SY-1911)==1)?'元':SY-1911)
    //   if(SY>1949) yDisplay = '共和國' + (((SY-1949)==1)?'元':SY-1949)

      // GZ.innerHTML = yDisplay +'年 農(nóng)歷' + cyclical(SY-1900+36) + '年 &nbsp;&nbsp;【'+Animals[(SY-4)%12]+'】';

       if(SY>1949) yDisplay = ''

       GZ.innerHTML = yDisplay +' 農(nóng)歷' + cyclical(SY-1900+36) + '年 &nbsp;&nbsp;【'+Animals[(SY-4)%12]+'】';

       YMBG.innerHTML = "&nbsp;" + SY + "<BR>&nbsp;" + monthName[SM];


       for(i=0;i<42;i++) {

          sObj=eval('SD'+ i);
          lObj=eval('LD'+ i);

          sObj.className = '';

          sD = i - cld.firstWeek;

          if(sD>-1 && sD<cld.length) { //日期內(nèi)
             sObj.innerHTML = sD+1;

             if(cld[sD].isToday) sObj.className = 'todyaColor'; //今日顏色

             sObj.style.color = cld[sD].color; //國定假日顏色

             if(cld[sD].lDay==1) //顯示農(nóng)歷月
                lObj.innerHTML = '<b>'+(cld[sD].isLeap?'閏':'') + cld[sD].lMonth + '月' + (monthDays(cld[sD].lYear,cld[sD].lMonth)==29?'小':'大')+'</b>';
             else //顯示農(nóng)歷日
                lObj.innerHTML = cDay(cld[sD].lDay);

             s=cld[sD].lunarFestival;
             if(s.length>0) { //農(nóng)歷節(jié)日
                if(s.length>6) s = s.substr(0, 4)+'…';
                s = s.fontcolor('red');
             }
             else { //國歷節(jié)日
                s=cld[sD].solarFestival;
                if(s.length>0) {
                   size = (s.charCodeAt(0)>0 && s.charCodeAt(0)<128)?8:4;
                   if(s.length>size+2) s = s.substr(0, size)+'…';
                   s = s.fontcolor('blue');
                }
                else { //廿四節(jié)氣
                   s=cld[sD].solarTerms;
                   if(s.length>0) s = s.fontcolor('limegreen');
                }
             }
             if(s.length>0) lObj.innerHTML = s;

          }
          else { //非日期
             sObj.innerHTML = '';
             lObj.innerHTML = '';
          }
       }
    }

    function changeLong()
    {
    var y,m,ly,lm,id,im,iy,yangy,yangm,deltm,miny,tt;
    CLD.SY.selectedIndex=CLD.D1.selectedIndex;
    CLD.SM.selectedIndex=CLD.D2.selectedIndex;
    yangm=0;yangy=0;
    tt=true;
    while (tt)
     {
     yangm=0;yangy=0;
       changeCld();
         for(i=0;i<42;i++)
         {
            sD = i - cld.firstWeek;
            if(sD>-1 && sD<cld.length)
            { //日期內(nèi)
             if ((cld[sD].lMonth==CLD.D2.selectedIndex+1)&&(cld[sD].lYear==CLD.D1.selectedIndex+1900))
             {
         yangy=CLD.SY.selectedIndex+1900;  yangm=CLD.SM.selectedIndex ;
         tt=false;
         break;
         }
             }
         }
         if (!tt) break;
      
       pushBtm('MD');
       changeCld();

    //   alert(CLD.SY.selectedIndex+" "+CLD.SM.selectedIndex);

         for(i=0;i<42;i++)
         {
            sD = i - cld.firstWeek;
            if(sD>-1 && sD<cld.length)
            { //日期內(nèi)
             if ((cld[sD].lMonth==CLD.D2.selectedIndex+1)&&(cld[sD].lYear==CLD.D1.selectedIndex+1900))
             {
         yangy=CLD.SY.selectedIndex+1900;  yangm=CLD.SM.selectedIndex ;
         tt=false;
         break;
         }
             }
         }
       break;  
     }
    //  alert(yangy+" "+yangm);
     

    //CLD.SY.selectedIndex=yangy;//-1900;
    //pushBtm('YU');
    //pushBtm('YD');
    CLD.SM.selectedIndex=yangm;
    pushBtm('MD');
    pushBtm('MU');
      
       
      
    }
    //changeLong end

    function changeCld() {
       var y,m;
       y=CLD.SY.selectedIndex+1900;
       m=CLD.SM.selectedIndex;
       drawCld(y,m);
    }

    function pushBtm(K) {
       switch (K){
          case 'YU' :
             if(CLD.SY.selectedIndex>0) CLD.SY.selectedIndex--;
             break;
          case 'YD' :
             if(CLD.SY.selectedIndex<149) CLD.SY.selectedIndex++;
             break;
          case 'MU' :
             if(CLD.SM.selectedIndex>0) {
                CLD.SM.selectedIndex--;
             }
             else {
                CLD.SM.selectedIndex=11;
                if(CLD.SY.selectedIndex>0) CLD.SY.selectedIndex--;
             }
             break;
          case 'MD' :
             if(CLD.SM.selectedIndex<11) {
                CLD.SM.selectedIndex++;
             }
             else {
                CLD.SM.selectedIndex=0;
                if(CLD.SY.selectedIndex<149) CLD.SY.selectedIndex++;
             }
             break;
          default :
             CLD.SY.selectedIndex=tY-1900;
             CLD.SM.selectedIndex=tM;
       }
       changeCld();
    }

     

    var Today = new Date();
    var tY = Today.getFullYear();
    var tM = Today.getMonth();
    var tD = Today.getDate();
    //////////////////////////////////////////////////////////////////////////////

    var width = "130";
    var offsetx = 2;
    var offsety = 16;

    var x = 0;
    var y = 0;
    var snow = 0;
    var sw = 0;
    var cnt = 0;

    var dStyle;
    document.onmousemove = mEvn;

    //顯示詳細(xì)日期資料
    function mOvr(v) {
       var s,festival;
       var sObj=eval('SD'+ v);
       var d=sObj.innerHTML-1;

          //sYear,sMonth,sDay,week,
          //lYear,lMonth,lDay,isLeap,
          //cYear,cMonth,cDay

       if(sObj.innerHTML!='') {

          sObj.style.cursor = 's-resize';

          if(cld[d].solarTerms == '' && cld[d].solarFestival == '' && cld[d].lunarFestival == '')
             festival = '';
          else
             festival = '<TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR="#CCFFCC"><TR><TD>'+
             '<FONT COLOR="#000000" STYLE="font-size:9pt;">'+cld[d].solarTerms + ' ' + cld[d].solarFestival + ' ' + cld[d].lunarFestival+'</FONT></TD>'+
             '</TR></TABLE>';

          s= '<TABLE WIDTH="130" BORDER=0 CELLPADDING="2" CELLSPACING=0 BGCOLOR="#000066"><TR><TD>' +
             '<TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD ALIGN="right"><FONT COLOR="#ffffff" STYLE="font-size:9pt;">'+
             cld[d].sYear+' 年 '+cld[d].sMonth+' 月 '+cld[d].sDay+' 日<br>星期'+cld[d].week+'<br>'+
             '<font color="violet">農(nóng)歷'+(cld[d].isLeap?'閏 ':' ')+cld[d].lMonth+' 月 '+cld[d].lDay+' 日</font><br>'+
             '<font color="yellow">'+cld[d].cYear+'年 '+cld[d].cMonth+'月 '+cld[d].cDay + '日</font>'+
             '</FONT></TD></TR></TABLE>'+ festival +'</TD></TR></TABLE>';


          document.all["detail"].innerHTML = s;

        if (snow == 0) {
             dStyle.left = x+offsetx-(width/2);
             dStyle.top = y+offsety;
         dStyle.visibility = "visible";
         snow = 1;
        }
     }
    }

    //清除詳細(xì)日期資料
    function mOut() {
     if ( cnt >= 1 ) { sw = 0 }
     if ( sw == 0 ) { snow = 0; dStyle.visibility = "hidden";}
     else cnt++;
    }

    //取得位置
    function mEvn() {
       x=event.x;
       y=event.y;
     if (document.body.scrollLeft)
        {x=event.x+document.body.scrollLeft; y=event.y+document.body.scrollTop;}
     if (snow){
          dStyle.left = x+offsetx-(width/2)
          dStyle.top = y+offsety
     }
    }

    ///////////////////////////////////////////////////////////////////////////


    function tick() {
       var today
       today = new Date()
       Clock.innerHTML = today.toLocaleString().replace(/(年|月)/g, "/").replace(/日/, "");
    //   Clock.innerHTML = TimeAdd(today.toGMTString(), CLD.TZ.value)
       window.setTimeout("tick()", 1000);
    }

    function setCookie(name, value) {
     var today = new Date()
     var expires = new Date()
     expires.setTime(today.getTime() + 1000*60*60*24*365)
     document.cookie = name + "=" + escape(value) + "; expires=" + expires.toGMTString()
    }

    function getCookie(Name) {
       var search = Name + "="
       if(document.cookie.length > 0) {
          offset = document.cookie.indexOf(search)
          if(offset != -1) {
             offset += search.length
             end = document.cookie.indexOf(";", offset)
             if(end == -1) end = document.cookie.length
             return unescape(document.cookie.substring(offset, end))
          }
          else return ""
       }
    }

    /////////////////////////////////////////////////////////

    function initial() {
       dStyle = detail.style;
       CLD.SY.selectedIndex=tY-1900;
       CLD.SM.selectedIndex=tM;
       drawCld(tY,tM);

    //   CLD.TZ.selectedIndex=getCookie("TZ");
    //   changeTZ();
       tick();
    }

     

    //-->
    </SCRIPT>

    <STYLE>.todyaColor {
     BACKGROUND-COLOR: aqua
    }
    </STYLE>

    <META content="Microsoft FrontPage 6.0" name=GENERATOR></HEAD>
    <BODY onload=initial()>
    <SCRIPT language=JavaScript><!--
       if(navigator.appName == "Netscape" || parseInt(navigator.appVersion) < 4)
       document.write("<h1>你的瀏覽器無法執(zhí)行此程序。</h1>此程序在 IE4 以后的版本才能執(zhí)行!!")
    //--></SCRIPT>

    <DIV id=detail style="POSITION: absolute"></DIV>
    <FORM name=CLD>
    <div align="center">
    <TABLE width="672" align="right" height="259" bordercolordark="#CC9900" border="4" background="l11.gif">
      <CENTER>
    <center>
      <TBODY>
      </center></center>
      <TR>
      <TD align=center vAlign=top width="170" height="255">
      <div align="center">
        <center>
      <TABLE BORDER=1 COLSPAN=2 width="221">
      <CENTER>
        <center><FONT size=2
          style="FONT-SIZE: 9pt">
        <td width="209">
          <p align="center"><font style="font-size:10.8pt" color=RED>本地計算機(jī)時間:</FONT></FONT><BR><FONT color=#000080 face=ARIAL
          id=Clock size=3 align="center"></FONT>
          <P><!--時區(qū) *表示自動調(diào)整為日光節(jié)約時間-->
          </center>
       </CENTER>
       </TABLE>
      </center>
        </div>
        <div align="center">
          <center>
          <table border=1 height="1" width="16">
          <td height="1" width="255">
                <table width="212" height="1"><CENTER>
                <center>
          <FONT id=tSave
          style="COLOR: red; FONT-FAMILY: Wingdings; FONT-SIZE: 18pt"></FONT>
          <td height="1" width="152"><font size="2"><FONT style="FONT-SIZE: 9pt">
          <font color="#0000FF">公歷</font>年</font><FONT color=#ffffff
                style="FONT-SIZE: 9pt"><SELECT name=SY onchange=changeCld()
                style="FONT-SIZE: 9pt">
                  <SCRIPT language=JavaScript><!--
                for(i=1900;i<2050;i++) document.write('<option>'+i)
                //--></SCRIPT>
                </SELECT> </FONT>月<FONT color=#ffffff
                style="FONT-SIZE: 9pt"><SELECT name=SM onchange=changeCld()
                style="FONT-SIZE: 9pt">
                  <SCRIPT language=JavaScript><!--
                for(i=1;i<13;i++) document.write('<option>'+i)
                //--></SCRIPT>
                </SELECT></FONT></font>
          <P><font size="2"><FONT style="FONT-SIZE: 9pt"><font color="#0000FF">陰歷</font>年</font><FONT color=#ffffff
                style="FONT-SIZE: 9pt"><SELECT name=D1 onchange=changeLong()
                style="FONT-SIZE: 9pt">
                  <SCRIPT language=JavaScript><!--
                for(i=1900;i<2050;i++) document.write('<option>'+i)
                //--></SCRIPT>
                </SELECT> </FONT>月<FONT color=#ffffff
                style="FONT-SIZE: 9pt"><SELECT name=D2 onchange=changeLong()
                style="FONT-SIZE: 9pt">
                  <SCRIPT language=JavaScript><!--
                for(i=1;i<13;i++) document.write('<option>'+i)
                //--></SCRIPT>
                </SELECT></FONT></font></P>
          <div align="center" style="width: 4; height: 1">
          </div>
          <td width="1" align="center" height="1">
          <BUTTON onclick="pushBtm('MU')"  style="FONT-SIZE: 9pt">月↑</BUTTON>
          <BUTTON onclick="pushBtm('')" style="FONT-SIZE: 9pt">當(dāng)月</BUTTON>
          <BUTTON onclick="pushBtm('MD')"  style="FONT-SIZE: 9pt">月↓</BUTTON>
          </td>
            </center></center>
     <tr>
      <CENTER>
          <TD align=center vAlign=top width=152 height="1">
          <BUTTON onclick="pushBtm('YU')" style="FONT-SIZE: 9pt">年↑</BUTTON>
          <BUTTON onclick="pushBtm('YD')" style="FONT-SIZE: 9pt">年↓</BUTTON>
          </TD>
            </center>
          <td colspan=2 width="46" height="1">
              <p align="left"><INPUT onclick="javascript:window.close();" style="FONT-SIZE: 9pt" type=button value=關(guān)閉></p>
          </td>

           </table>
      <CENTER>
            <table border="1" width="100%" height="1" bordercolordark="#FFFFCC">
            <tr>
              <td width="100%" height="1"><font style="font-size:10.8pt" color=#0>  
                陰歷存在跨月情況,如果查找到的陰歷月跨兩個公歷月,用<font color=blue>[月↑][月↓]</font>翻動可以找到你想要的確切日期。</font></td>
            </tr>
          </table>
          </CENTER>
          </table>
          </center>
        </div>
        <TD align=center width="423" height="255">
          <DIV style="position: absolute; top: 31; z-index: -1; left: 270; width: 347; height: 108">
            <p>
            <p>
            <p><FONT id=YMBG
          style="COLOR: #f0f0f0; FONT-FAMILY: 'Arial Black'; FONT-SIZE: 20pt"> </FONT>
          </DIV>
          <div align="center">
          <center>
          <TABLE border=0 height="27" cellspacing="1">
            <TBODY>
            <TR>
              <TD bgColor=#000080 colSpan=7 align="center" height="24"><FONT color=#000080 size=2
                style="FONT-SIZE: 9pt">月</FONT> <FONT color=#ffffff face=宋體 id=GZ
                size=4></FONT><BR></TD></TR>
            <TR align=center bgColor=#e0e0e0>
              <TD width=54 height="1" align="center" bgcolor="#99CCFF"><font size="2">日</font></TD>
              <TD width=54 height="1" align="center" bgcolor="#99CCFF"><font size="2">一</font></TD>
              <TD width=54 height="1" align="center" bgcolor="#99CCFF"><font size="2">二</font></TD>
              <TD width=50 height="1" align="center" bgcolor="#99CCFF"><font size="2">三</font></TD>
              <TD width=54 height="1" align="center" bgcolor="#99CCFF"><font size="2">四</font></TD>
              <TD width=54 height="1" align="center" bgcolor="#99CCFF"><font size="2">五</font></TD>
              <TD width=54 height="1" align="center" bgcolor="#99CCFF"><font size="2">六</font></TD></TR>
            <SCRIPT language=JavaScript><!--
                var gNum
                for(i=0;i<6;i++) {
                   document.write('<tr align=center>')
                   for(j=0;j<7;j++) {
                      gNum = i*7+j
                      document.write('<td id="GD' + gNum +'" onMouseOver="mOvr(' + gNum +')" onMouseOut="mOut()"><font id="SD' + gNum +'" size=2 face="Arial Black"')
                      if(j == 0) document.write(' color=red')
                      if(j == 6)
                         if(i%2==1) document.write(' color=red')
                            else document.write(' color=green')
                      document.write(' TITLE=""> </font><br><font id="LD' + gNum + '" size=2 style="font-size:9pt"> </font></td>')
                   }
                   document.write('</tr>')
                }
                //--></SCRIPT>
            </TBODY></TABLE>
          </center>
          </div>
      </TD>
    </TR></TBODY></TABLE>
    </div>
    </FORM> 

    </body>

    </html>



    semovy 2007-09-27 17:19 發(fā)表評論
    ]]>
    Windows關(guān)機(jī)效果分析http://www.aygfsteel.com/WshmAndLily/articles/148369.htmlsemovysemovyWed, 26 Sep 2007 08:39:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/148369.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/148369.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/148369.html#Feedback0http://www.aygfsteel.com/WshmAndLily/comments/commentRss/148369.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/148369.html基本原理分析

    Windows關(guān)機(jī)效果分析

    使用Windows系統(tǒng)的用戶在關(guān)機(jī)的時候,出現(xiàn)的界面只允許用戶選擇關(guān)機(jī)、注銷或取消動作,而桌面上的程序都不能使用,并且屏幕呈現(xiàn)灰色狀態(tài)。

    本例將仿照這種高亮顯示的效果在網(wǎng)頁上實(shí)現(xiàn).

    在網(wǎng)頁上運(yùn)用這種關(guān)機(jī)效果有什么好處呢?首先,由于單擊某一鏈接后,將用戶此時不可用的操作隱藏在后臺,將可用的操作放在屏幕最上層,并高亮顯示,可以避免用戶的誤操作。其次,將信息高亮顯示,也可以提醒用戶應(yīng)該注意的事項。

    網(wǎng)頁中實(shí)現(xiàn)關(guān)機(jī)效果分析

    在網(wǎng)頁中實(shí)現(xiàn)這種效果的原理很簡單。創(chuàng)建兩個圖層,一個為遮蓋層,覆蓋整個頁面,并且顯示為灰色;另一個圖層作為高亮顯示的部分,在遮蓋層的上方,這可通過設(shè)置圖層的z-index屬性來設(shè)置。當(dāng)取消關(guān)機(jī)效果后,只需將這兩個圖層元素在頁面中刪除即可。

    以下代碼實(shí)現(xiàn)顯示關(guān)機(jī)效果。

    以下是引用片段:
    <html>

    <head>

    <title>html" class="wordstyle">asp?typeid=119" snap_preview_added="no">Ajax LightBox Sample</title>

    <style type="text/html" class="wordstyle">asp?typeid=38" snap_preview_added="no">CSS">

    #lightbox {/*該層為高亮顯示層*/

    BORDER-RIGHT: #fff 1px solid;

    BORDER-TOP: #fff 1px solid;

    DISPLAY: block;

    Z-INDEX: 9999; /*設(shè)置該層在網(wǎng)頁的最上端,設(shè)置足夠大*/

    BACKGROUND: #fdfce9; /*設(shè)置背景色*/

    LEFT: 50%;

    MARGIN: -220px 0px 0px -250px;

    BORDER-LEFT: #fff 1px solid;

    WIDTH: 500px;

    BORDER-BOTTOM: #fff 1px solid;

    POSITION: absolute;

    TOP: 50%;

    HEIGHT: 400px;

    TEXT-ALIGN: left

    }

    #overlay {/*該層為覆蓋層*/

    DISPLAY: block;

    Z-INDEX: 9998; /*設(shè)置高亮層的下方*/

    FILTER: alpha(opacity=80); /*設(shè)置成透明*/

    LEFT: 0px;

    WIDTH: 100%;

    POSITION: absolute;

    TOP: 0px;

    HEIGHT: 100%;

    BACKGROUND-COLOR: #000;

    moz-opacity: 0.8;

    opacity: .80

    }

    </style>

    </head>

    <body>

    <!--該層為覆蓋層 -->

    <div id="overlay"></div>

    <!--該層為高亮顯示層 -->

    <div id="lightbox"></div>

    </body>

    </html>


    需要注意的是,在IE瀏覽器中如果有<select>標(biāo)記,則該標(biāo)記不能被覆蓋層覆蓋,但在其他瀏覽器中則可以覆蓋。

    在使用IE瀏覽器時,要先將網(wǎng)頁中的<select>元素隱藏起來。如以下代碼可以用于隱藏頁面所有的<select>元素。

    selects = document.getElementsByTagName('select');

    以下是引用片段:
    for(i = 0; i < selects.length; i++) {

    selects[i].style.visibility = visibility;

    }
    代碼實(shí)現(xiàn)

    客戶端代碼

    客戶端的頁面上有兩個鏈接,用戶單擊鏈接后,向服務(wù)器端發(fā)送請求,并將返回信息顯示到高亮層上。客戶端的網(wǎng)頁文件代碼如下所示:

    以下是引用片段:
    <html>

    <head>

    <title>AJAX LightBox</title>

    <!-- 本例使用的css樣式表文件-->

    <LINK href="lightbox.css" type=text/css rel=stylesheet>

    <!--prototype類文件-->

    <script type="text/html" class="wordstyle">asp?typeid=36" snap_preview_added="no">html" class="wordstyle">

    javascript" src="js/prototype.js" ></script>

    <!--本例使用的html" class="wordstyle">javascript代碼-->

    <script type="text/html" class="wordstyle">javascript" src="lightbox.js" ></script>

    </head>

    <body>

    <DIV id=container>

    <UL>

    <LI><A class=lbOn href="getInfo.html" class="wordstyle">jsp?id=one">One</A>

    </LI>

    <LI><A class=lbOn href="getInfo.html" class="wordstyle">jsp?id=two">Two</A>

    </LI>

    </UL>

    </div>

    </body>

    </html>


    另外,還需要設(shè)置該頁面所使用CSS樣式。lightbox.css樣式表文件代碼如下所示:

    以下是引用片段:
    #lightbox {

    BORDER-RIGHT: #fff 1px solid;

    BORDER-TOP: #fff 1px solid;

    DISPLAY: none;

    Z-INDEX: 9999;

    BACKGROUND: #fdfce9;

    LEFT: 50%;

    MARGIN: -220px 0px 0px -250px;

    BORDER-LEFT: #fff 1px solid;

    WIDTH: 500px;

    BORDER-BOTTOM: #fff 1px solid;

    POSITION: absolute;

    TOP: 50%;

    HEIGHT: 400px;

    TEXT-ALIGN: left

    }

    UNKNOWN {

    POSITION: fixed

    }

    #overlay {

    DISPLAY: none;

    Z-INDEX: 5000; FILTER: alpha(opacity=80);

    LEFT: 0px;

    WIDTH: 100%;

    POSITION: absolute;

    TOP: 0px;

    HEIGHT: 100%;

    BACKGROUND-COLOR: #000; moz-opacity: 0.8; opacity: .80

    }

    UNKNOWN {

    POSITION: fixed

    }

    .done#lightbox #lbLoadMessage {

    DISPLAY: none

    }

    .done#lightbox #lbContent {

    DISPLAY: block

    }

    .loading#lightbox #lbContent {

    DISPLAY: none

    }

    .loading#lightbox #lbLoadMessage {

    DISPLAY: block

    }

    .done#lightbox IMG {

    WIDTH: 100%; HEIGHT: 100%

    }



    客戶端腳本

    由于瀏覽器對圖層的支持不同,所以首先要確定客戶端瀏覽器的類型。以下代碼可用于判斷客戶端的瀏覽器和html" class="wordstyle">asp"

    以下是引用片段:
    snap_preview_added="no">操作系統(tǒng)。

    var detect = navigator.userAgent.toLowerCase();

    var OS,browser,version,total,thestring;

    function getBrowserInfo() {

    if (checkIt('konqueror')) {

    browser = "Konqueror";

    OS = "html" class="wordstyle">asp?typeid=60" snap_preview_added="no">Linux";

    }

    else if (checkIt('safari')) browser = "Safari"

    else if (checkIt('omniWeb')) browser = "OmniWeb"

    else if (checkIt('opera')) browser = "Opera"

    else if (checkIt('Webtv')) browser = "WebTV";

    else if (checkIt('icab')) browser = "iCab"

    else if (checkIt('msie')) browser = "Internet Explorer"

    else if (!checkIt('compatible')) {

    browser = "Netscape Navigator"

    version = detect.charAt(8);

    }

    else browser = "An unknown browser";

    if (!version) version = detect.charAt(place + thestring.length);

    if(!OS) {

    if (checkIt('linux')) OS = "Linux";

    else if (checkIt('x11')) OS = "Unix";

    else if (checkIt('mac')) OS = "Mac"

    else if (checkIt('win')) OS = "Windows"

    else OS = "an unknown operating system";

    }

    }

    function checkIt(string) {

    place = detect.indexOf(string) + 1;

    thestring = string;

    return place;

    }



    下面看一下網(wǎng)頁加載時需要添加的方法。有關(guān)網(wǎng)頁加載和初始化方法代碼如下:
    //網(wǎng)頁加載調(diào)用initialize和getBrowserInfo方法

    Event.observe(window, 'load', initialize, false);

    Event.observe(window, 'load', getBrowserInfo, false);

    //未加載時清空緩存

    Event.observe(window, 'unload', Event.unloadCache, false);

    //初始化方法

    function initialize(){

    //調(diào)用該方法為該頁添加覆蓋層和高亮顯示層

    addLightboxMarkup();

    //為每個可高亮顯示的元素創(chuàng)建lightbox對象

    lbox = document.getElementsByClassName('lbOn');

    for(i = 0; i < lbox.length; i++) {

    valid = new lightbox(lbox[i]);

    }

    }

    // 使用Dom方法創(chuàng)建覆蓋層和高亮層

    function addLightboxMarkup() {

    bod = document.getElementsByTagName('body')[0];

    overlay = document.createElement('div');

    overlay.id = 'overlay';

    lb = document.createElement('div');

    lb.id = 'lightbox';

    lb.className = 'loading';

    lb.innerHTML = '<div id="lbLoadMessage">' +

    '<p>Loading</p>' +

    '</div>';

    bod.appendChild(overlay);

    bod.appendChild(lb);

    }



    封裝lightbox類

    初始化數(shù)據(jù)時,為每個可高亮顯示的鏈接創(chuàng)建了lightbox對象。該類的代碼具體實(shí)現(xiàn)如下:
    var lightbox = Class.create();  

    lightbox.prototype = {

    yPos : 0,

    xPos : 0,

    //構(gòu)造方法,ctrl為創(chuàng)建該對象的元素

    initialize: function(ctrl) {

    //將該元素的鏈接賦值給this.content

    this.content = ctrl.href;

    //為該元素添加onclick事件activate方法

    Event.observe(ctrl, 'click', this.activate.bindAsEventListener(this), false);

    ctrl.onclick = function(){return false;};

    },

    //當(dāng)單擊鏈接時

    activate: function(){

    if (browser == 'Internet Explorer'){//判斷為IE瀏覽器

    this.getScroll();

    this.prepareIE('100%', 'hidden');

    this.setScroll(0,0);

    this.hideSelects('hidden');//隱藏所有的<select>標(biāo)記

    }

    //調(diào)用該類中的displayLightbox方法

    this.displayLightbox("block");

    },

    prepareIE: function(height, overflow){

    bod = document.getElementsByTagName('body')[0];

    bod.style.height = height;

    bod.style.overflow = overflow;



    htm = document.getElementsByTagName('html')[0];

    htm.style.height = height;

    htm.style.overflow = overflow;

    },

    hideSelects: function(visibility){

    selects = document.getElementsByTagName('select');

    for(i = 0; i < selects.length; i++) {

    selects[i].style.visibility = visibility;

    }

    },

    getScroll: function(){

    if (self.pageYOffset) {

    this.yPos = self.pageYOffset;

    } else if (document.documentElement && document.documentElement.scrollTop){

    this.yPos = document.documentElement.scrollTop;

    } else if (document.body) {

    this.yPos = document.body.scrollTop;

    }

    },

    setScroll: function(x, y){

    window.scrollTo(x, y);

    },

    displayLightbox: function(display){

    //將覆蓋層顯示

    $('overlay').style.display = display;

    //將高亮層顯示

    $('lightbox').style.display = display;

    //如果不是隱藏狀態(tài),則調(diào)用該類中的loadInfo方法

    if(display != 'none') this.loadInfo();

    },

    //該方法發(fā)送Ajax請求

    loadInf function() {

    //當(dāng)請求完成后調(diào)用本類中processInfo方法

    var myAjax = new Ajax.Request(

    this.content,

    {method: 'get', parameters: "", onComplete: this.processInfo.bindAsEvent Listener (this)}

    );

    },

    // 將返回的文本信息顯示到高亮層上

    processInf function(response){

    //獲得返回的文本數(shù)據(jù)

    var result = response.responseText;

    //顯示到高亮層

    info = "<div id='lbContent'>" + result + "</div>";

    //在info元素前插入一個元素

    new Insertion.Before($('lbLoadMessage'), info)

    //改變該元素的class name的值

    $('lightbox').className = "done";

    //調(diào)用本類中actions方法

    this.actions();

    var ctrl=$('lightbox');

    //為高亮層添加事件處理方法reset

    Event.observe(ctrl, 'click', this.reset.bindAsEventListener(this), false);

    ctrl.onclick = function(){return false;};

    },

    //恢復(fù)初始狀態(tài)

    reset:function(){

    //隱藏覆蓋層

    $('overlay').style.display="none";

    //清空返回數(shù)據(jù)

    $('lbContent').innerHTML="";

    //隱藏高亮層

    $('lightbox').style.display="none";

    },

    // Search through new links within the lightbox, and attach click event

    actions: function(){

    lbActions = document.getElementsByClassName('lbAction');

    for(i = 0; i < lbActions.length; i++) {

    Event.observe(lbActions[i], 'click',

    this[lbActions[i].rel].bindAs EventListener(this), false);

    lbActions[i].onclick = function(){return false;};

    }

    }

    }


    提示:由于該對象比較復(fù)雜,讀者可以仔細(xì)參閱代碼的注釋部分。

    服務(wù)器端代碼

    服務(wù)器端首先獲得查詢中的“id”值,如果該值為null或為空,則設(shè)置為默認(rèn)值。然后判斷該值,并且返回相應(yīng)的一段字符串信息。處理請求的getInfohtml" class="wordstyle">jsp頁面代碼如下:

    以下是引用片段:
    <%@ page language="java" import="java.util.*"%>

    <%

    //獲得請求中id的值

    String imgID = request.getParameter("id");

    if (imgID==null||imgID.equals(""))//如果為null或為空

    imgID="one";//設(shè)定為默認(rèn)值

    if ( imgID.equals("one"))//如果為one

    {

    %>

    <h3 id="cartitle" style="border-bottom: 1px solid #C0C0C0; margin-bottom: -5px">Porsche Carrera GT</h3>

    <p>The Carrera GT has a 5.7 litre V10 internal combustion engine that produces

    605 SAE horsepower (451 kW). Porsche claims it will accelerate from 0 to 100

    km/h (62 mph) in 3.9 seconds and has a maximum speed of 330 km/h (204 mph).

    With 605 hp, the car weighs 1,380 kg (3,042 lb). The Carrera GT is only

    offered with a six-speed manual transmission, in contrast to its rival the

    Ferrari Enzo that is only offered with sequential manual transmission. Also

    the Carrera GT is significantly less expensive than the Ferrari Enzo. The

    Ferrari Enzo is priced around $660,000 to the Carrera GT's $440,000. The

    Carrera GT is known for its high quality and reliability which makes it one of

    the best supercars ever.

    <%}else{//否則

    %>

    <h3 id="cartitle" style="border-bottom: 1px solid #C0C0C0; margin-bottom: -5px">Ferrari Testarossa</h3>

    <p>The Ferrari Testarossa is an V12 mid-engined sports car made by Ferrari.

    The name, which means &quot;red head&quot;, comes from the red painted cylinder heads on

    the flat-12 engine. The engine was technically a 180?V engine since it shared

    flat-plane crankshaft pins with opposing cylinders. Output was 390 hp (291

    kW), and the car won many comparison tests and admirers - it was featured on

    the cover of Road &amp; Track magazine nine times in just five years. Almost

    10,000 Testarossas, 512TRs, and 512Ms were produced, making this one of the

    most common Ferrari models despite its high price and exotic design.

    <%}%>

    html" class="wordstyle">aspx" snap_preview_added="spa" snap_icon_added="spa" act_suffix ic

    【責(zé)任編輯:城塵 TEL:(010) 68476636-8003】


    semovy 2007-09-26 16:39 發(fā)表評論
    ]]>
    經(jīng)典的帶陰影的可拖動的浮動層http://www.aygfsteel.com/WshmAndLily/articles/146368.htmlsemovysemovyWed, 19 Sep 2007 02:34:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/146368.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/146368.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/146368.html#Feedback0http://www.aygfsteel.com/WshmAndLily/comments/commentRss/146368.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/146368.html <html>
    <head>
    <title>MyPixbot</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <script language="JavaScript" type="text/JavaScript">
    <!--
    function MM_reloadPage(init) {  //reloads the window if Nav4 resized
      if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
        document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
      else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
    }
    MM_reloadPage(true);
    function MM_findObj(n, d) { //v4.01
      var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
        d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
      if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
      for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
      if(!x && d.getElementById) x=d.getElementById(n); return x;
    }
    function MM_showHideLayers() { //v6.0
      var i,p,v,obj,args=MM_showHideLayers.arguments;
      for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
        if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
        obj.visibility=v; }
    }
    function MM_dragLayer(objName,x,hL,hT,hW,hH,toFront,dropBack,cU,cD,cL,cR,targL,targT,tol,dropJS,et,dragJS) { //v4.01
      //Copyright 1998 Macromedia, Inc. All rights reserved.
      var i,j,aLayer,retVal,curDrag=null,curLeft,curTop,IE=document.all,NS4=document.layers;
      var NS6=(!IE&&document.getElementById), NS=(NS4||NS6); if (!IE && !NS) return false;
      retVal = true; if(IE && event) event.returnValue = true;
      if (MM_dragLayer.arguments.length > 1) {
        curDrag = MM_findObj(objName); if (!curDrag) return false;
        if (!document.allLayers) { document.allLayers = new Array();
          with (document) if (NS4) { for (i=0; i<layers.length; i++) allLayers[i]=layers[i];
            for (i=0; i<allLayers.length; i++) if (allLayers[i].document && allLayers[i].document.layers)
              with (allLayers[i].document) for (j=0; j<layers.length; j++) allLayers[allLayers.length]=layers[j];
          } else {
            if (NS6) { var spns = getElementsByTagName("span"); var all = getElementsByTagName("div");
              for (i=0;i<spns.length;i++) if (spns[i].style&&spns[i].style.position) allLayers[allLayers.length]=spns[i];}
            for (i=0;i<all.length;i++) if (all[i].style&&all[i].style.position) allLayers[allLayers.length]=all[i];
        } }
        curDrag.MM_dragOk=true; curDrag.MM_targL=targL; curDrag.MM_targT=targT;
        curDrag.MM_tol=Math.pow(tol,2); curDrag.MM_hLeft=hL; curDrag.MM_hTop=hT;
        curDrag.MM_hWidth=hW; curDrag.MM_hHeight=hH; curDrag.MM_toFront=toFront;
        curDrag.MM_dropBack=dropBack; curDrag.MM_dropJS=dropJS;
        curDrag.MM_everyTime=et; curDrag.MM_dragJS=dragJS;
        curDrag.MM_oldZ = (NS4)?curDrag.zIndex:curDrag.style.zIndex;
        curLeft= (NS4)?curDrag.left:(NS6)?parseInt(curDrag.style.left):curDrag.style.pixelLeft;
        if (String(curLeft)=="NaN") curLeft=0; curDrag.MM_startL = curLeft;
        curTop = (NS4)?curDrag.top:(NS6)?parseInt(curDrag.style.top):curDrag.style.pixelTop;
        if (String(curTop)=="NaN") curTop=0; curDrag.MM_startT = curTop;
        curDrag.MM_bL=(cL<0)?null:curLeft-cL; curDrag.MM_bT=(cU<0)?null:curTop-cU;
        curDrag.MM_bR=(cR<0)?null:curLeft+cR; curDrag.MM_bB=(cD<0)?null:curTop+cD;
        curDrag.MM_LEFTRIGHT=0; curDrag.MM_UPDOWN=0; curDrag.MM_SNAPPED=false; //use in your JS!
        document.onmousedown = MM_dragLayer; document.onmouseup = MM_dragLayer;
        if (NS) document.captureEvents(Event.MOUSEDOWN|Event.MOUSEUP);
      } else {
        var theEvent = ((NS)?objName.type:event.type);
        if (theEvent == 'mousedown') {
          var mouseX = (NS)?objName.pageX : event.clientX + document.body.scrollLeft;
          var mouseY = (NS)?objName.pageY : event.clientY + document.body.scrollTop;
          var maxDragZ=null; document.MM_maxZ = 0;
          for (i=0; i<document.allLayers.length; i++) { aLayer = document.allLayers[i];
            var aLayerZ = (NS4)?aLayer.zIndex:parseInt(aLayer.style.zIndex);
            if (aLayerZ > document.MM_maxZ) document.MM_maxZ = aLayerZ;
            var isVisible = (((NS4)?aLayer.visibility:aLayer.style.visibility).indexOf('hid') == -1);
            if (aLayer.MM_dragOk != null && isVisible) with (aLayer) {
              var parentL=0; var parentT=0;
              if (NS6) { parentLayer = aLayer.parentNode;
                while (parentLayer != null && parentLayer.style.position) {            
                  parentL += parseInt(parentLayer.offsetLeft); parentT += parseInt(parentLayer.offsetTop);
                  parentLayer = parentLayer.parentNode;
              } } else if (IE) { parentLayer = aLayer.parentElement;      
                while (parentLayer != null && parentLayer.style.position) {
                  parentL += parentLayer.offsetLeft; parentT += parentLayer.offsetTop;
                  parentLayer = parentLayer.parentElement; } }
              var tmpX=mouseX-(((NS4)?pageX:((NS6)?parseInt(style.left):style.pixelLeft)+parentL)+MM_hLeft);
              var tmpY=mouseY-(((NS4)?pageY:((NS6)?parseInt(style.top):style.pixelTop) +parentT)+MM_hTop);
              if (String(tmpX)=="NaN") tmpX=0; if (String(tmpY)=="NaN") tmpY=0;
              var tmpW = MM_hWidth;  if (tmpW <= 0) tmpW += ((NS4)?clip.width :offsetWidth);
              var tmpH = MM_hHeight; if (tmpH <= 0) tmpH += ((NS4)?clip.height:offsetHeight);
              if ((0 <= tmpX && tmpX < tmpW && 0 <= tmpY && tmpY < tmpH) && (maxDragZ == null
                  || maxDragZ <= aLayerZ)) { curDrag = aLayer; maxDragZ = aLayerZ; } } }
          if (curDrag) {
            document.onmousemove = MM_dragLayer; if (NS4) document.captureEvents(Event.MOUSEMOVE);
            curLeft = (NS4)?curDrag.left:(NS6)?parseInt(curDrag.style.left):curDrag.style.pixelLeft;
            curTop = (NS4)?curDrag.top:(NS6)?parseInt(curDrag.style.top):curDrag.style.pixelTop;
            if (String(curLeft)=="NaN") curLeft=0; if (String(curTop)=="NaN") curTop=0;
            MM_oldX = mouseX - curLeft; MM_oldY = mouseY - curTop;
            document.MM_curDrag = curDrag;  curDrag.MM_SNAPPED=false;
            if(curDrag.MM_toFront) {
              eval('curDrag.'+((NS4)?'':'style.')+'zIndex=document.MM_maxZ+1');
              if (!curDrag.MM_dropBack) document.MM_maxZ++; }
            retVal = false; if(!NS4&&!NS6) event.returnValue = false;
        } } else if (theEvent == 'mousemove') {
          if (document.MM_curDrag) with (document.MM_curDrag) {
            var mouseX = (NS)?objName.pageX : event.clientX + document.body.scrollLeft;
            var mouseY = (NS)?objName.pageY : event.clientY + document.body.scrollTop;
            newLeft = mouseX-MM_oldX; newTop  = mouseY-MM_oldY;
            if (MM_bL!=null) newLeft = Math.max(newLeft,MM_bL);
            if (MM_bR!=null) newLeft = Math.min(newLeft,MM_bR);
            if (MM_bT!=null) newTop  = Math.max(newTop ,MM_bT);
            if (MM_bB!=null) newTop  = Math.min(newTop ,MM_bB);
            MM_LEFTRIGHT = newLeft-MM_startL; MM_UPDOWN = newTop-MM_startT;
            if (NS4) {left = newLeft; top = newTop;}
            else if (NS6){style.left = newLeft; style.top = newTop;}
            else {style.pixelLeft = newLeft; style.pixelTop = newTop;}
            if (MM_dragJS) eval(MM_dragJS);
            retVal = false; if(!NS) event.returnValue = false;
        } } else if (theEvent == 'mouseup') {
          document.onmousemove = null;
          if (NS) document.releaseEvents(Event.MOUSEMOVE);
          if (NS) document.captureEvents(Event.MOUSEDOWN); //for mac NS
          if (document.MM_curDrag) with (document.MM_curDrag) {
            if (typeof MM_targL =='number' && typeof MM_targT == 'number' &&
                (Math.pow(MM_targL-((NS4)?left:(NS6)?parseInt(style.left):style.pixelLeft),2)+
                 Math.pow(MM_targT-((NS4)?top:(NS6)?parseInt(style.top):style.pixelTop),2))<=MM_tol) {
              if (NS4) {left = MM_targL; top = MM_targT;}
              else if (NS6) {style.left = MM_targL; style.top = MM_targT;}
              else {style.pixelLeft = MM_targL; style.pixelTop = MM_targT;}
              MM_SNAPPED = true; MM_LEFTRIGHT = MM_startL-MM_targL; MM_UPDOWN = MM_startT-MM_targT; }
            if (MM_everyTime || MM_SNAPPED) eval(MM_dropJS);
            if(MM_dropBack) {if (NS4) zIndex = MM_oldZ; else style.zIndex = MM_oldZ;}
            retVal = false; if(!NS) event.returnValue = false; }
          document.MM_curDrag = null;
        }
        if (NS) document.routeEvent(objName);
      } return retVal;
    }
    function loadwin(obj){
     with(MM_findObj(obj))with(style){
      filters[0].apply();
      display='';
      filters[0].play();
     }
    }
    function cs(captionBG,bodyBG,tableBG){
    oldBody=document.body;
     with(oldBody){
      var newBody=cloneNode();
      style.filter='blendtrans(duration=1)';
      filters[0].apply();
      with(document.styleSheets[0]){
       with(rules[0].style){backgroundColor=captionBG;}
       with(rules[1].style){backgroundColor=bodyBG;}
       with(rules[2].style){backgroundColor=tableBG}
      }
      filters[0].play();
      setTimeout(function(){
        if(oldBody!=null){
         oldBody.applyElement(newBody, "inside")
         oldBody.swapNode(newBody);
         oldBody.removeNode(true);
         }
        },1500);
     }
    }
    //-->
    </script>
    <style type="text/css">
    <!--
    .caption {
     font-size: 9px;
     color: #FFFFFF;
     background-color: #00CCFF;
     padding-left: 5px;
     cursor: default;
     font-family: "Verdana", "Arial";
     border: 1px inset;
    }
    body {
     background-color: #f6f6f6;
     border: 1px inset;
     overflow: hidden;
    }
    table {
     background-color: #eeeeee;
    }
    td {
     font-family: "Verdana", "Arial";
     font-size: 9px;
     border: 0px;
    }
    .win {
     filter:BlendTrans(duration=1) DropShadow(Color=#cccccc, OffX=3, OffY=3) alpha(opacity=90)
    }
    a {
     text-decoration: none;
     color: #003399;
    }
    a:hover {
     color: #FF0000;
    }
    input {
     font-family: "Verdana", "Arial";
     font-size: 9px;
     border-width: 1px;
    }
    .statusbar {
     font-family: "Tahoma", "Verdana";
     font-size: 9px;
     color: #999999;
     padding-left: 3px;
    }
    .button {
     border: 1px outset;
     text-align: center;
    }
    .navframe {
     padding: 5px;
    }
    -->
    </style>
    </head>
    <body>
    <div id="assist" style="position:absolute; left:15px; top:68px; width:185px; z-index:1;display:none;" class="win" onMouseDown="MM_dragLayer('assist','',0,0,150,18,true,false,-1,-1,-1,-1,15,68,100,'',false,'')">
      <table width="180" border="1" cellpadding="0" cellspacing="0">
        <tr>
          <td class="caption">SeekAssist</td>
          <td width="14" align="center"><a href="#" onclick="with(MM_findObj('assistwin').style)display=display=='none'?'':'none'">%</a></td>
          <td width="14" align="center"><a href="#" onClick="MM_showHideLayers('assist','','hide')">X</a></td>
        </tr>
        <tr id="assistwin">
          <td height="100" colspan="3" bordercolor="#eeeeee">&nbsp;</td>
        </tr>
      </table>
            <br>
    </div>
    <script>loadwin('assist')</script>
    <div id="rank" style="position:absolute; left:15px; top:194px; width:185px; z-index:1;display:none;" class="win" onMouseDown="MM_dragLayer('rank','',0,0,150,18,true,false,-1,-1,-1,-1,15,194,100,'',false,'')">
      <table width="180" border="1" cellpadding="0" cellspacing="0">
        <tr>
          <td class="caption">SeekRank</td>
          <td width="14" align="center"><a href="#" onclick="with(MM_findObj('rankwin').style)display=display=='none'?'':'none'">%</a></td>
          <td width="14" align="center"><a href="#" onClick="MM_showHideLayers('assist','','inherit','rank','','hide')">X</a></td>
        </tr>
        <tr id="rankwin">
          <td height="100" colspan="3" bordercolor="#eeeeee">&nbsp;</td>
        </tr>
      </table>
      <br>
    </div>
    <script>setTimeout("loadwin('rank')",500)</script>
    <div id="mycolor" style="position:absolute; left:15px; top:320px; width:185px; z-index:1;display:none;" class="win" onMouseDown="MM_dragLayer('mycolor','',0,0,150,18,true,false,-1,-1,-1,-1,15,320,100,'',false,'')">
      <table width="180" border="1" cellpadding="0" cellspacing="0">
        <tr>
          <td class="caption">MyColor</td>
          <td width="14" align="center"><a href="#" onclick="with(MM_findObj('mycolorwin').style)display=display=='none'?'':'none'">%</a></td>
          <td width="14" align="center"><a href="#" onClick="MM_showHideLayers('mycolor','','hide')">X</a></td>
        </tr>
        <tr id="mycolorwin">
          <td height="100" colspan="3" bordercolor="#eeeeee"><table width="100%" border="0" cellspacing="0" cellpadding="2">
            <tr>
              <td align="center"><a href="#" onclick="cs('#00CCFF','#f6f6f6','#eeeeee')">Default</a></td>
            </tr>
            <tr>
              <td align="center"><a href="#" onclick="cs('red','#eeccee','#eeddee')">StyleSheet#1</a></td>
            </tr>
            <tr>
              <td align="center"><a href="#" onclick="cs('#99ccff','#eeeeee','#ccddff')">StyleSheet#2</a></td>
            </tr>
            <tr>
              <td align="center"><a href="#" onclick="cs('#ff9999','#ffffff','#ffeeff')">StyleSheet#3</a></td>
            </tr>
            <tr>
              <td align="center"><a href="#" onclick="cs('skyblue','#eeeeee','#99ddff')">StyleSheet#4</a></td>
            </tr>
            <tr>
              <td align="center"><a href="#" onclick="cs('#009900','#eeffee','#ddffdd')">StyleSheet#5</a></td>
            </tr>
          </table></td>
        </tr>
      </table>
      <br>
    </div>
    <script>setTimeout("loadwin('mycolor')",1000)</script>
    <div id="results" style="position:absolute; left:204px; top:68px; width:575px; z-index:1;display:none;" class="win" onMouseDown="MM_dragLayer('results','',0,0,400,18,true,false,-1,-1,-1,-1,204,68,50,'',false,'')">
      <table width="570" border="1" cellpadding="0" cellspacing="0">
        <tr>
          <td><table width="100%" border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td class="caption">Results</td>
                <td width="12" class="button"><a href="#" onClick="with(MM_findObj('resultswin').style)display=display=='none'?'':'none'">%</a></td>
                <td width="12" class="button"><a href="#" onClick="MM_showHideLayers('results','','inherit')">X</a></td>
              </tr>
          </table></td>
        </tr>
        <tr>
          <td height="20" bordercolor="#eeeeee"><input name="url" type="text" value="http://www.google.com/search?q=ezlee" size="100">
          <a href="#" onclick="mainframe.location=url.value">Search</a></td>
        </tr>
        <tr id="resultswin">
          <td height="318" valign="top" class="navframe"><aiframe name="mainframe" id="mainframe" src="http://www.google.com/search?q=ezlee" width="100%" height="100%" frameborder="0" scrolling="auto"><font color="#FF0000">Welcome!</font></aiframe></td>
        </tr>
        <tr>
          <td height="14" class="statusbar">Ready!</td>
              </tr>
      </table>
      <br>
    </div>
    <script>setTimeout("loadwin('results')",2000)</script>
    </body>
    </html>

    semovy 2007-09-19 10:34 發(fā)表評論
    ]]>
    跳動的菜單http://www.aygfsteel.com/WshmAndLily/articles/146364.htmlsemovysemovyWed, 19 Sep 2007 02:31:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/146364.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/146364.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/146364.html#Feedback0http://www.aygfsteel.com/WshmAndLily/comments/commentRss/146364.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/146364.html <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>模仿as效果的導(dǎo)航菜單</title>
    <style type="text/css">
    <!--
    a:link,a:visited    { text-decoration: none; color: #666666 }
    a:hover            { text-decoration: underline }
    #hor1 {
        position:absolute;
        left:320px;
        top:20px;
        width:220px;
        height:20px;
        z-index:1;
        background-color: #999900;
    }
    #hor2 {
        position:absolute;
        left:320px;
        top:40px;
        width:220px;
        height:20px;
        z-index:2;
        background-color: #FFCC00;
    }
    #hor3 {
        position:absolute;
        left:320px;
        top:60px;
        width:220px;
        height:20px;
        z-index:3;
        background-color: #99CC00;
    }
    #board1 {
        position:absolute;
        left:320px;
        top:40px;
        width:220px;
        height:120px;
        z-index:-100;
        background-color: #333333;
        visibility: hidden;
    }
    body,td,th {
        font-family: Verdana, Arial, Helvetica, sans-serif;
        font-size: 12px;
        color: #FFFFFF;
        font-weight: bold;
    }
    body {
        background-color: #666666;
    }
    #board2 {
        position:absolute;
        left:320px;
        top:60px;
        width:220px;
        height:120px;
        z-index:-90;
        background-color: #333333;
        visibility: hidden;
    }
    #board3 {
        position:absolute;
        width:220px;
        height:120px;
        z-index:-80;
        left: 320px;
        top: 80px;
        background-color: #333333;
        visibility: hidden;
    }
    #hor4 {
        position:absolute;
        left:320px;
        top:80px;
        width:220px;
        height:20px;
        z-index:4;
        background-color: #99CCCC;
    }
    #board4 {
        position:absolute;
        left:320px;
        top:100px;
        width:220px;
        height:120px;
        z-index:-70;
        background-color: #333333;
        visibility: hidden;
    }
    -->
    </style>
    <script type="text/javascript">
    lastNo=0
    function re(menu_no){
    if(lastNo!=menu_no){
    cur=menu_no+1
    lastNo=menu_no
    rest()
    }else{
    cur=100
    }
    document.getElementById("board"+menu_no).style.visibility="visible"
    }
    function rest(){
    for(i=1;i<=4;i++){
    document.getElementById("hor"+i).style.top=20*i;
    document.getElementById("board"+i).style.visibility="hidden"
    }
    menu_num=4;
     act=1
     height=120+20
     speed=0;
     posY=0;
    }
    function huke(){
    if(act==1&&cur<100){
    speed=(height-posY)*0.69+speed*0.6
    posY+=speed
    for(i=cur;i<=menu_num;i++){
    document.getElementById("hor"+i).style.top=posY+(i-2)*20
    }
    if(Math.abs(height-posY)<0.5){
    for(i=cur;i<=menu_num;i++){
    document.getElementById("hor"+i).style.top=height+(i-2)*20
    }
    act=0
    }
    setTimeout("huke()",50)
    }
    }
    </script>
    </head>
    <body>
    <div id="hor1" onclick="re(1);huke()">News</div>
    <div id="hor2" onclick="re(2);huke()">Populor</div>
    <div id="hor3" onclick="re(3);huke()">Sports</div>
    <div id="hor4" onclick="re(4);huke()">Woman</div>
    <div id="board1">1.由AS而想起Javascript<br />2.用Jscript寫ASP有沒有先天性的不足?<br />3.沒有了。</div>
    <div id="board2">1.xhtml+css真的來了嗎?<br />2.Flash取代傳統(tǒng)網(wǎng)站<br />3.Flash何時才能連接數(shù)據(jù)庫?</div>
    <div id="board3">1.程序員與小姐的10個相同。<br />2.中國的程序員與中國的足球?</div>
    <div id="board4">1.二十一世紀(jì)最缺的是什么?人才<br />
    <a target="_blank">http://www.gamvan.com</a>
    <a target="_blank">http://www.gamvan.com</a></div>
    </body>
    </html>

    semovy 2007-09-19 10:31 發(fā)表評論
    ]]>
    滾動字幕http://www.aygfsteel.com/WshmAndLily/articles/146360.htmlsemovysemovyWed, 19 Sep 2007 02:22:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/146360.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/146360.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/146360.html#Feedback0http://www.aygfsteel.com/WshmAndLily/comments/commentRss/146360.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/146360.html div { font-size:12px; }
    </style>
    <div id="mq" style="width:100%;height:70px;overflow:hidden" onmouseover="iScrollAmount=0"
    onmouseout="iScrollAmount=1">
      輕輕的我走了,正如我輕輕的來;<br/>
      我輕輕的招手,作別西天的云彩。<br/>
      <br/>
      那河畔的金柳,是夕陽中的新娘;<br/>
      波光里的艷影,在我心頭蕩漾。<br/>
      <br/>
      軟泥上的青荇,油油的在水底招搖;<br/>
      在康河的柔波里,我甘心作一條水草。<br/>
      <br/>
      那榆蔭下的一潭,不是清泉是天上的虹;<br/>
      揉碎在浮藻間,沉淀彩虹似的夢。<br/>
      <br/>
      尋夢,撐支長篙,向青草更青處漫溯;<br/>
      滿載一船星輝,在星輝斑爛里放歌。<br/>
      <br/>
      但我不能放歌,悄悄是別離的笙簫;<br/>
      夏蟲也為我沉默,沉默是今晚的康橋。<br/>
      <br/>
      悄悄的我走了,正如我悄悄的來;<br/>
      我揮一揮衣袖,不帶走一片云彩。<br/>
      <br/>
    </div>
    <script>
    var oMarquee = document.getElementById("mq"); //滾動對象
    var iLineHeight = 42; //單行高度,像素
    var iLineCount = 7; //實(shí)際行數(shù)
    var iScrollAmount = 1; //每次滾動高度,像素
    function run() {
    oMarquee.scrollTop += iScrollAmount;
    if ( oMarquee.scrollTop == iLineCount * iLineHeight )
    oMarquee.scrollTop = 0;
    if ( oMarquee.scrollTop % iLineHeight == 0 ) {
    window.setTimeout( "run()", 2000 );
    } else {
    window.setTimeout( "run()", 50 );
    }
    }
    oMarquee.innerHTML += oMarquee.innerHTML;
    window.setTimeout( "run()", 2000 );
    </script>

    semovy 2007-09-19 10:22 發(fā)表評論
    ]]>
    js普通檢驗 check.jshttp://www.aygfsteel.com/WshmAndLily/articles/145531.htmlsemovysemovySun, 16 Sep 2007 06:46:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/145531.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/145531.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/145531.html#Feedback0http://www.aygfsteel.com/WshmAndLily/comments/commentRss/145531.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/145531.html/*
    -------------------------------------------------------------------------------
    文件名稱:check.js
    說    明:JavaScript腳本,用于檢查網(wǎng)頁提交表單的輸入數(shù)據(jù)
    版    本:1.0
    修改紀(jì)錄:
    ---------------------------------------------------------------------------
    時間  修改人  說明
    2002-8-29 libo  創(chuàng)建
    2004-03-08  xueyishan    修改,加入checkMobile()
    2005-06-01  zhouming    修改了isDate(),支持格式
    -------------------------------------------------------------------------------  
    */

    /*
    用途:校驗ip地址的格式
    輸入:strIP:ip地址
    返回:如果通過驗證返回true,否則返回false; 
    */
    function isIP(strIP) {
            if (isNull(strIP)) return false;
     var re=/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/g //匹配IP地址的正則表達(dá)式
     if(re.test(strIP))
     {
      if( RegExp.$1 <256 && RegExp.$2<256 && RegExp.$3<256 && RegExp.$4<256) return true;
     }
     return false;
    }

    /*
    用途:檢查輸入字符串是否為空或者全部都是空格
    輸入:str
    返回:
     如果全是空返回true,否則返回false
    */
    function isNull( str ){
     if ( str == "" ) return true;
     var regu = "^[ ]+$";
     var re = new RegExp(regu);
     return re.test(str);
    }


    /*
    用途:檢查輸入對象的值是否符合整數(shù)格式
    輸入:str 輸入的字符串
    返回:如果通過驗證返回true,否則返回false 
    */
    function isInteger( str ){ 
     var regu = /^[-]{0,1}[0-9]{1,}$/;
            return regu.test(str);
    }

    /*
    用途:檢查輸入手機(jī)號碼是否正確
    輸入:
     s:字符串
    返回:
     如果通過驗證返回true,否則返回false 
    */
    function checkMobile( s ){  
     var regu =/^[1][3][0-9]{9}$/;
     var re = new RegExp(regu);
     if (re.test(s)) {
       return true;
     }else{
       return false;
     }
    }
     
     
    /*
    用途:檢查輸入字符串是否符合正整數(shù)格式
    輸入:
     s:字符串
    返回:
     如果通過驗證返回true,否則返回false 
    */
    function isNumber( s ){  
     var regu = "^[0-9]+$";
     var re = new RegExp(regu);
     if (s.search(re) != -1) {
        return true;
     } else {
        return false;
     }
    }

    /*
    用途:檢查輸入字符串是否是帶小數(shù)的數(shù)字格式,可以是負(fù)數(shù)
    輸入:
     s:字符串
    返回:
     如果通過驗證返回true,否則返回false 
    */
    function isDecimal( str ){  
             if(isInteger(str)) return true;
     var re = /^[-]{0,1}(\d+)[\.]+(\d+)$/;
     if (re.test(str)) {
        if(RegExp.$1==0&&RegExp.$2==0) return false;
        return true;
     } else {
        return false;
     }
    }

    /*
    用途:檢查輸入對象的值是否符合端口號格式
    輸入:str 輸入的字符串
    返回:如果通過驗證返回true,否則返回false 
    */
    function isPort( str ){ 
     return (isNumber(str) && str<65536);
    }

    /*
    用途:檢查輸入對象的值是否符合E-Mail格式
    輸入:str 輸入的字符串
    返回:如果通過驗證返回true,否則返回false 
    */
    function isEmail( str ){ 
     var myReg = /^[-_A-Za-z0-9]+@([_A-Za-z0-9]+\.)+[A-Za-z0-9]{2,3}$/;
     if(myReg.test(str)) return true;
     return false;
    }

    /*
    用途:檢查輸入字符串是否符合金額格式
     格式定義為帶小數(shù)的正數(shù),小數(shù)點(diǎn)后最多三位
    輸入:
     s:字符串
    返回:
     如果通過驗證返回true,否則返回false 
    */
    function isMoney( s ){  
     var regu = "^[0-9]+[\.][0-9]{0,3}$";
     var re = new RegExp(regu);
     if (re.test(s)) {
        return true;
     } else {
        return false;
     }
    }
    /*
    用途:檢查輸入字符串是否只由英文字母和數(shù)字和下劃線組成
    輸入:
     s:字符串
    返回:
     如果通過驗證返回true,否則返回false 
    */
    function isNumberOr_Letter( s ){    //判斷是否是數(shù)字或字母
     var regu = "^[0-9a-zA-Z\_]+$";
     var re = new RegExp(regu);
     if (re.test(s)) {
       return true;
     }else{
       return false;
     }
    }
    /*
    用途:檢查輸入字符串是否只由英文字母和數(shù)字組成
    輸入:
     s:字符串
    返回:
     如果通過驗證返回true,否則返回false 
    */
    function isNumberOrLetter( s ){    //判斷是否是數(shù)字或字母
     var regu = "^[0-9a-zA-Z]+$";
     var re = new RegExp(regu);
     if (re.test(s)) {
       return true;
     }else{
       return false;
     }
    }
     /*
    用途:檢查輸入字符串是否只由漢字、字母、數(shù)字組成
    輸入:
     value:字符串
    返回:
     如果通過驗證返回true,否則返回false 
    */
    function isChinaOrNumbOrLett( s ){    //判斷是否是漢字、字母、數(shù)字組成
     var regu = "^[0-9a-zA-Z\u4e00-\u9fa5]+$";  
     var re = new RegExp(regu);
     if (re.test(s)) {
       return true;
     }else{
       return false;
     }
    }

    /*
    用途:判斷是否是日期
    輸入:date:日期;fmt:日期格式
    返回:如果通過驗證返回true,否則返回false
    */
    function isDate( date, fmt ) {
        if (fmt==null) fmt="yyyyMMdd";
        var yIndex = fmt.indexOf("yyyy");
        if(yIndex==-1) return false;
       var year = date.substring(yIndex,yIndex+4);
       var mIndex = fmt.indexOf("MM");
        if(mIndex==-1) return false;
       var month = date.substring(mIndex,mIndex+2);
       var dIndex = fmt.indexOf("dd");
        if(dIndex==-1) return false;
       var day = date.substring(dIndex,dIndex+2);
        if(!isNumber(year)||year>"2100" || year< "1900") return false;
        if(!isNumber(month)||month>"12" || month< "01") return false;
        if(day>getMaxDay(year,month) || day< "01") return false;
        return true;
    }

    function getMaxDay(year,month) {
     if(month==4||month==6||month==9||month==11)
      return "30";
     if(month==2)
      if(year%4==0&&year%100!=0 || year%400==0)
       return "29";
      else
       return "28";
     return "31";
    }

    /*
    用途:字符1是否以字符串2結(jié)束
    輸入:str1:字符串;str2:被包含的字符串
    返回:如果通過驗證返回true,否則返回false 
    */
    function isLastMatch(str1,str2)

       var index = str1.lastIndexOf(str2);
       if(str1.length==index+str2.length) return true;
       return false;
    }


    /*
    用途:字符1是否以字符串2開始
    輸入:str1:字符串;str2:被包含的字符串
    返回:如果通過驗證返回true,否則返回false 
    */
    function isFirstMatch(str1,str2)

       var index = str1.indexOf(str2);
       if(index==0) return true;
       return false;
    }

    /*
    用途:字符1是包含字符串2
    輸入:str1:字符串;str2:被包含的字符串
    返回:如果通過驗證返回true,否則返回false 
    */
    function isMatch(str1,str2)

       var index = str1.indexOf(str2);
       if(index==-1) return false;
       return true;
    }


    /*
    用途:檢查輸入的起止日期是否正確,規(guī)則為兩個日期的格式正確,
     且結(jié)束如期>=起始日期
    輸入:
     startDate:起始日期,字符串
     endDate:結(jié)束如期,字符串
    返回:
     如果通過驗證返回true,否則返回false 
    */
    function checkTwoDate( startDate,endDate ) {
     if( !isDate(startDate) ) {
      alert("起始日期不正確!");
      return false;
     } else if( !isDate(endDate) ) {
      alert("終止日期不正確!");
      return false;
     } else if( startDate > endDate ) {
      alert("起始日期不能大于終止日期!");
      return false;
     }
     return true;
    }

    /*
    用途:檢查輸入的Email信箱格式是否正確
    輸入:
     strEmail:字符串
    返回:
     如果通過驗證返回true,否則返回false 
    */
    function checkEmail(strEmail) {
     //var emailReg = /^[_a-z0-9]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$/;
     var emailReg = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;
     if( emailReg.test(strEmail) ){
      return true;
     }else{
      alert("您輸入的Email地址格式不正確!");
      return false;
     }
    }

    /*
    用途:檢查輸入的電話號碼格式是否正確
    輸入:
     strPhone:字符串
    返回:
     如果通過驗證返回true,否則返回false 
    */
    function checkPhone( strPhone ) {
     var phoneRegWithArea = /^[0][1-9]{2,3}-[0-9]{5,10}$/;
     var phoneRegNoArea = /^[1-9]{1}[0-9]{5,8}$/;
     var prompt = "您輸入的電話號碼不正確!"
     if( strPhone.length > 9 ) {
      if( phoneRegWithArea.test(strPhone) ){
       return true;
      }else{
       alert( prompt );
       return false;
      }
     }else{
      if( phoneRegNoArea.test( strPhone ) ){
       return true;
      }else{
       alert( prompt );
       return false;
      }  
     }
    }
     

    /*
    用途:檢查復(fù)選框被選中的數(shù)目
    輸入:
     checkboxID:字符串
    返回:
     返回該復(fù)選框中被選中的數(shù)目 
    */ 
    function checkSelect( checkboxID ) {
     var check = 0;
     var i=0;
     if( document.all(checkboxID).length > 0 ) {
      for(  i=0; i<document.all(checkboxID).length; i++ ) {
       if( document.all(checkboxID).item( i ).checked  ) {
        check += 1;
       }    
      }
     }else{
      if( document.all(checkboxID).checked )
       check = 1;
     }
     return check;
    }

    function getTotalBytes(varField) {
     if(varField == null)
      return -1;
     
     var totalCount = 0;
     for (i = 0; i< varField.value.length; i++) {
      if (varField.value.charCodeAt(i) > 127)
       totalCount += 2;
      else
       totalCount++ ;
     }
     return totalCount;
    }

    function getFirstSelectedValue( checkboxID ){
     var value = null;
     var i=0;
     if( document.all(checkboxID).length > 0 ){
      for(  i=0; i<document.all(checkboxID).length; i++ ){
       if( document.all(checkboxID).item( i ).checked ){
        value = document.all(checkboxID).item(i).value;
        break;
       }
      }
     } else {
      if( document.all(checkboxID).checked )
       value = document.all(checkboxID).value;
      }
     return value;

    function getFirstSelectedIndex( checkboxID ){
     var value = -2;
     var i=0;
     if( document.all(checkboxID).length > 0 ){
      for(  i=0; i<document.all(checkboxID).length; i++ ) {
       if( document.all(checkboxID).item( i ).checked  ) {
        value = i;
        break;
       }
      }
     } else {
      if( document.all(checkboxID).checked )
       value = -1;
     }
     return value;
    }
     
    function selectAll( checkboxID,status ) {
     if( document.all(checkboxID) == null)
      return;

     if( document.all(checkboxID).length > 0 ){
      for(  i=0; i<document.all(checkboxID).length; i++ ) {
       document.all(checkboxID).item( i ).checked = status;
      }
     } else {
      document.all(checkboxID).checked = status;
     }
    }

    function selectInverse( checkboxID ) {
     if( document.all(checkboxID) == null)
      return;

     if( document.all(checkboxID).length > 0 ) {
      for(  i=0; i<document.all(checkboxID).length; i++ ) {
       document.all(checkboxID).item( i ).checked = !document.all(checkboxID).item( i ).checked;
      }
     } else {
      document.all(checkboxID).checked = !document.all(checkboxID).checked;
     }
    }

    function checkDate( value ) {
     if(value=='') return true;
     if(value.length!=8 || !isNumber(value)) return false; 
     var year = value.substring(0,4);
     if(year>"2100" || year< "1900") return false;
     
     var month = value.substring(4,6);
     if(month>"12" || month< "01") return false;
     
     var day = value.substring(6,8);
     if(day>getMaxDay(year,month) || day< "01") return false;
     
     return true; 
    }

    /*
    用途:檢查輸入的起止日期是否正確,規(guī)則為兩個日期的格式正確或都為空
     且結(jié)束日期>=起始日期
    輸入:
     startDate:起始日期,字符串
     endDate:  結(jié)束日期,字符串
    返回:
     如果通過驗證返回true,否則返回false 
    */
    function checkPeriod( startDate,endDate ) {
     if( !checkDate(startDate) ) {
      alert("起始日期不正確!");
      return false;
     } else if( !checkDate(endDate) ) {
      alert("終止日期不正確!");
      return false;
     } else if( startDate > endDate ) {
      alert("起始日期不能大于終止日期!");
      return false;
     }
     return true;
    }

    /*
    用途:檢查證券代碼是否正確
    輸入:
     secCode:證券代碼
    返回:
     如果通過驗證返回true,否則返回false 
    */
    function checkSecCode( secCode ) {
     if( secCode.length !=6 ){
      alert("證券代碼長度應(yīng)該為6位");
      return false;
     }
     
     if(!isNumber( secCode ) ){
      alert("證券代碼只能包含數(shù)字");  
      return false;
        }
     return true;
    }

    /****************************************************
    function : cTrim(sInputString,iType)
    description : 字符串去空格的函數(shù)
    parameters : iType: 1=去掉字符串左邊的空格
          2=去掉字符串左邊的空格
          0=去掉字符串左邊和右邊的空格
    return value: 去掉空格的字符串
    ****************************************************/
    function cTrim(sInputString,iType)
    {
     var sTmpStr = ' ';
     var i = -1;
     
     if(iType == 0 || iType == 1)
     {
      while(sTmpStr == ' ')
      {
       ++i;
       sTmpStr = sInputString.substr(i,1);
      }
      sInputString = sInputString.substring(i);
     } 
     if(iType == 0 || iType == 2)
     {
      sTmpStr = ' ';
      i = sInputString.length;
      while(sTmpStr == ' ')
      {
       --i;
       sTmpStr = sInputString.substr(i,1);
      }
      sInputString = sInputString.substring(0,i+1);
     }
     return sInputString;
    }

    /*
    -------------------------------------------------------------------------------
    說    明:JavaScript腳本,驗證表單中的數(shù)據(jù)項  begin
    -------------------------------------------------------------------------------  
    */
    function checkForm(objFrm){
     var len = 0;
     len = objFrm.elements.length;

     var i = 0;
     var objCheck;
     //文本框
     for(i = 0; i < len; i ++){
      objCheck = objFrm.elements[i];
      if(objCheck.type =="text" && !f_checkTextValid(objCheck) ){
       return false;   
      }
     }
     //下拉框
     for(i = 0; i < len; i ++){
      objCheck = objFrm.elements[i];
      if(objCheck.type =="select-one" && !f_checkSelectValid(objCheck) ){
       return false;   
      }
     }
     //時間段有效
     if( f_checkStartAndEndDate(objFrm) == false) return false;
     
     return true;
    }
    function f_checkSelectValid(obj){
     //alert("check select");
     if(obj.options.length <= 0){
      alert("下拉選框無數(shù)據(jù)!");
      return false; 
     }
     return true;
    }
    function f_checkStartAndEndDate(frm){
     var len = frm.elements.length;
     if(len == null && len == 0) return true;
     var i=0;
     var temp;
     var objCheck;
     var objStartDate;
     var objEndDate;
     //alert("start date period check");
     try{
      for(i=0; i< len ; i++){
       objCheck = frm.elements[i];
       temp = objCheck.name;
       if( temp.indexOf("startDate") >0 ||temp.indexOf("beginDate")>0 )
        objStartDate = objCheck;
       if( temp.indexOf("endDate") > 0 )
        objEndDate = objCheck;
        
      }
      //alert(objStartDate.value);
      //alert(objEndDate.value);
      if(objStartDate.value==null || objStartDate.value =="" || objStartDate.value ==null || objStartDate.value ==""){
       return true;
      }
      return checkTwoDate(objStartDate.value, objEndDate.value); 
      //alert("end date period check");
     }catch(E){}
     return true;
    }

    function f_checkTextValid(obj){
     //不能為空
     if(obj.getAttribute("isNeed") != null){
      if(f_isNotNull(obj) == false) return false;
     }
     //不能超過長度
     if(obj.getAttribute("maxlength") != null){
      if(f_checkLength(obj) == false) return false;
     }
     var checkType ="";
     checkType = obj.getAttribute("checkType");
     if(checkType==null||checkType=="") return true;
     //
     if (checkType.indexOf("number") >=0){
      if(f_isNumber(obj) == false)  return false;
      if(f_checkNumType(obj,checkType) == false)  return false;
      
     }
     //
     if (checkType.indexOf("positive") >=0){
      if(f_isNumber(obj) == false)  return false;
      if(f_isPositive(obj)==false)  return false;
      if(f_checkNumType(obj,checkType) == false)  return false;
      
     }
     if (checkType.indexOf("date") >=0){
      if(f_checkDate(obj) == false) return false;
      
     }
     
     /*
     switch(checkType){
      case "number": if(f_isNumber(obj) == false) return false;break;
      case "date": if(f_checkDate(obj) == false) return false;break;
      default:
     }
     */
     return true;
    }

    function f_isNotNull(obj){
     if(obj.value == ""){
      f_alert(obj, " 不允許為空值!");
      return false;
     }
     return true;
    }

    function f_isNumber(obj){
     if(isNaN(obj.value)){
       f_alert(obj," 應(yīng)為數(shù)值類型");
      return false;  
     }
     return true;

    }
    function f_checkDate(obj) {
     if(checkDate(obj.value) ==false){
       f_alert(obj," 不是合法日期格式!");
      return false;  
     }
     return true;
    }

    function f_checkLength(obj){
     if(getTotalBytes(obj) > Math.abs( obj.getAttribute("maxlength") ) ){
       f_alert(obj," 超出長度限制!");
      return false;  
     }
     return true;
     
    }

    function  f_alert(obj,alertStr){
     var fielName = obj.getAttribute("fieldName");
     if(fielName == null)
      fielName = "";
     alert(fielName + "\n" +alertStr);
     obj.select();
     obj.focus();
    }

    function f_checkNumType(obj, numType){
     //假設(shè): 已經(jīng)進(jìn)行數(shù)字類型判斷
     
     var strTemp;
     var numpric;
     var numLen;
     var strArr;
     var defaultLen = 19;
     var defaultpric = 5;

     try{
      if(numType == null|| numType =="") return f_checkNumLenPrec(obj,defaultLen, defaultpric);
      if(numType.indexOf("(") < 0 || numType.indexOf(")") < 0 ) return f_checkNumLenPrec(obj,defaultLen, defaultpric);
      strTemp = numType.substr( numType.indexOf("(") + 1 ,numType.indexOf(")") - numType.indexOf("(") -1 );
      if(strTemp == null||strTemp =="") return f_checkNumLenPrec(obj,defaultLen, defaultpric);
      strArr = strTemp.split(","); 
      numLen = Math.abs( strArr[0] );
      numpric = Math.abs( strArr[1] ); 
      return f_checkNumLenPrec(obj,numLen, numpric);
     }catch(e){
      alert("in f_checkNumType = " + e);
       return f_checkNumLenPrec(obj,defaultLen, defaultpric);
     }

    }

    function f_checkNumLenPrec(obj, len, pric){
     var numReg;
     var value = obj.value;
     var strValueTemp, strInt, strDec; 
     //alert(value + "=====" + len + "====="+ pric);
     try{ 
      
      numReg =/[\-]/;
      strValueTemp = value.replace(numReg, "");
      strValueTemp = strValueTemp.replace(numReg, "");
      //整數(shù)
      if(pric==0){
       numReg =/[\.]/;
       //alert(numReg.test(value));
       if(numReg.test(value) == true){
        f_alert(obj, "輸入必須為整數(shù)類型!");
        return false; 
       }   
      }
      
      if(strValueTemp.indexOf(".") < 0 ){
       //alert("lennth==" + strValueTemp);  
       if(strValueTemp.length >( len - pric)){
        f_alert(obj, "整數(shù)位不能超過"+ (len - pric) +"位");
        return false;
       }
      
      }else{
       strInt = strValueTemp.substr( 0, strValueTemp.indexOf(".") );  
       //alert("lennth==" + strInt);  
       if(strInt.length >( len - pric)){
        f_alert(obj, "整數(shù)位不能超過"+ (len - pric) +"位");
        return false;
       }  

       strDec = strValueTemp.substr( (strValueTemp.indexOf(".")+1), strValueTemp.length );  
       //alert("pric==" + strDec);  
       if(strDec.length > pric){
        f_alert(obj, "小數(shù)位不能超過"+  pric +"位");
        return false;
       }  
      }
      
      return true;
     }catch(e){
      alert("in f_checkNumLenPrec = " + e);
      return false;
     } 
    }

    function f_isPositive(obj){
     var numReg =/[\-]/;
     if(numReg.test(obj.value) == true){
      f_alert(obj, "必須為正數(shù)!");
      return false;
     }
     return true;
     
    }


    /*
    function selectedCheckboxCount(form)
    功能說明:對Form中選中的可選項計數(shù)

    參數(shù)說明:
    form:指定的表單
    */
    function selectedCheckboxCount(form){
     var length =0;
     var i=0;
     var count =0;
     eles = form.elements;
     while(i<eles.length){
      obj= eles.item(i);
    //  type = obj.attributes.item("type").nodeValue;
            type = obj.type;
      if(type == "checkbox"){
       if(obj.checked){
        count++;
       }
      }
      i++;
     }
     return count;
    }

    //得到字節(jié)長度
    function getByteLen(str)
    {
            var l = str.length;
            var n = l;
            for ( var i=0; i<l; i++ )
        
                    if ( str.charCodeAt(i) <0 || str.charCodeAt(i) >255 )
                            n=n+1;
            return n
    }

    /*
    說明:
    1.清除表格中的數(shù)據(jù)(0.0 和 0)
    2.如果cell中沒有數(shù)據(jù),則自動加上一個空格
    3.清除空白行的checkbox

    參數(shù):
    clearzero:是否清除"0"、"0.0",false不清除、true清除(默認(rèn)為true)
    tablename:要清除的表格名字,默認(rèn)為sortTable
    */
    function clear_table(clearzero,tablename)
    {
     var tobject;
     if(tablename==null)
      tobject=gmobj("sortTable");
     else
      tobject=gmobj(tablename);
     //如果table未定義,則不進(jìn)行過濾
     
     if(tobject==null)
      return;
      
     
     //如果函數(shù)調(diào)用參數(shù)為空,表示要清除0、0.0;反之,不要清除0、0.0。
     var clear = (clearzero==null)?true:clearzero;

     //清除0、0.0,填補(bǔ)空格
     var rows = tobject.rows;
     var j=0;
     for(var i=0;i<rows.length;i++)
     {
      //取得第一個cell的屬性clear,如果為1,表示該行沒有數(shù)據(jù),則清除該行所有數(shù)據(jù)
      
       while(tobject.rows[i].cells[j] != null)
       {
        if(clear)
        {
         if(tobject.rows[i].cells[j].innerHTML==0 ||tobject.rows[i].cells[j].innerHTML==0.0||tobject.rows[i].cells[j].innerHTML=="")
          tobject.rows[i].cells[j].innerText=" ";
        }
        else
        {
         if (tobject.rows[i].cells[j].innerHTML=="")
          tobject.rows[i].cells[j].innerText=" ";
        }
        j++;
       }
       j=0;
      
     }
        return true;
    }

    function gmobj(mtxt)  /* Get object by object name */
    {
      if (document.getElementById) {
          m=document.getElementById(mtxt);
      } else if (document.all) {
          m=document.all[mtxt];
      } else if (document.layers) {
          m=document.layers[mtxt];
      }
      return m;
    }
    /*
    -------------------------------------------------------------------------------
    說    明:JavaScript腳本,驗證表單中的數(shù)據(jù)項  end
    -------------------------------------------------------------------------------  
    */

    /*
    用途:檢查輸入字符串是否是帶小數(shù)的數(shù)字格式,可以是負(fù)數(shù)(并且滿足規(guī)定的精度)
    輸入:str:字符串
                l:總位數(shù)
               d:小數(shù)點(diǎn)后位數(shù)
    返回:
     如果通過驗證返回true,否則返回false 
    */
    function isDecimal( str,l,d ){  
             if(isInteger(str)) {
        if (l==null)  return true;
        if (str<0) l--;
          if (str.length<=l) return true;
             }

             var re = /^[-]{0,1}(\d+)[\.]+(\d+)$/;
           if (re.test(str)) {
      if (l==null)  return true;
      if (d==null) d=0;
            if(RegExp.$1==0&&RegExp.$2==0) return false;
      if (RegExp.$1.length+RegExp.$2.length<=l
       && RegExp.$2.length<=d)  return true;
        }
     return false;
    }



    semovy 2007-09-16 14:46 發(fā)表評論
    ]]>
    javascript固定div位置在頁面中的位置http://www.aygfsteel.com/WshmAndLily/articles/144495.htmlsemovysemovyWed, 12 Sep 2007 07:03:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/144495.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/144495.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/144495.html#Feedback2http://www.aygfsteel.com/WshmAndLily/comments/commentRss/144495.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/144495.html<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <HTML>
    <HEAD>
    <TITLE>AAAAAAAA</TITLE>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html" charset="UTF-8">
    </HEAD>
    <style>
    <!--
    .div{
    position: absolute;
    border: 2px solid red;
    background-color: #EFEFEF;
    line-height:90px;
    font-size:12px;
    z-index:1000;
    }
    -->
    </style>
    <BODY>
    <div id="Javascript.Div1" class="div" style="width: 240px; height:90px" align="center">正中...</div>
    <SCRIPT LANGUAGE="JavaScript">
    function sc1(){
    document.getElementById("Javascript.Div1").style.top=
       document.documentElement.scrollTop+(document.documentElement.clientHeight-document.getElementById("Javascript.Div1").offsetHeight)/2
    document.getElementById("Javascript.Div1").style.left=
       document.documentElement.scrollLeft+(document.documentElement.clientWidth-document.getElementById("Javascript.Div1").offsetWidth)/2;
    }
    </SCRIPT>


    <div id="Javascript.Div2" class="div" style="width: 240px; height:90px;" align="center">左上...</div>
    <SCRIPT LANGUAGE="JavaScript">
    function sc2(){
    document.getElementById("Javascript.Div2").style.top=document.documentElement.scrollTop
    document.getElementById("Javascript.Div2").style.left=document.documentElement.scrollLeft;
    }
    </SCRIPT>

    <div id="Javascript.Div3" class="div" style="width: 240px; height:90px;" align="center">左下...</div>
    <SCRIPT LANGUAGE="JavaScript">
    function sc3(){
    document.getElementById("Javascript.Div3").style.top=
        document.documentElement.scrollTop+document.documentElement.clientHeight-document.getElementById("Javascript.Div3").offsetHeight;
    document.getElementById("Javascript.Div3").style.left=document.documentElement.scrollLeft;
    }
    </SCRIPT>

    <div id="Javascript.Div4" class="div" style="width: 240px; height:90px;" align="center">右上...</div>
    <SCRIPT LANGUAGE="JavaScript">
    function sc4(){
    document.getElementById("Javascript.Div4").style.top=document.documentElement.scrollTop;
    document.getElementById("Javascript.Div4").style.left=
        document.documentElement.scrollLeft+document.documentElement.clientWidth-document.getElementById("Javascript.Div4").offsetWidth;
    }
    </SCRIPT>

    <div id="Javascript.Div5" class="div" style="width: 240px; height:90px;" align="center">右下...</div>
    <SCRIPT LANGUAGE="JavaScript">
    function sc5(){

    document.getElementById("Javascript.Div5").style.top=
        document.documentElement.scrollTop+document.documentElement.clientHeight-document.getElementById("Javascript.Div5").offsetHeight;
    document.getElementById("Javascript.Div5").style.left=
        document.documentElement.scrollLeft+document.documentElement.clientWidth-document.getElementById("Javascript.Div5").offsetWidth;;
    }
    </SCRIPT>


    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function scall(){
    sc1();sc2();sc3();sc4();sc5();
    }
    window.onscroll=scall;
    window.onresize=scall;
    window.onload=scall;
    //-->
    </SCRIPT>
    <div style="position: absolute; top: 0; left: 0; width: 10000px; height: 4000px;"></div>
    </BODY>
    </HTML>

     



    semovy 2007-09-12 15:03 發(fā)表評論
    ]]>
    Javascript 獲取滾動條位置http://www.aygfsteel.com/WshmAndLily/articles/144429.htmlsemovysemovyWed, 12 Sep 2007 02:50:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/144429.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/144429.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/144429.html#Feedback0http://www.aygfsteel.com/WshmAndLily/comments/commentRss/144429.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/144429.html
    <script type="text/javascript">
  •  
  • // 說明:用 Javascript 獲取滾動條位置等信息
  • // 來源 :ThickBox 2.1 
  • // 整理 :CodeBit.cn ( http://www.CodeBit.cn )
  •  
  • function getScroll() 
  • {
  •     var t, l, w, h;
  •     
  •     if (document.documentElement && document.documentElement.scrollTop) {
  •         t = document.documentElement.scrollTop;
  •         l = document.documentElement.scrollLeft;
  •         w = document.documentElement.scrollWidth;
  •         h = document.documentElement.scrollHeight;
  •     } else if (document.body) {
  •         t = document.body.scrollTop;
  •         l = document.body.scrollLeft;
  •         w = document.body.scrollWidth;
  •         h = document.body.scrollHeight;
  •     }
  •     return { t: t, l: l, w: w, h: h };
  • }
  •  
  • </script>
  •  


  • semovy 2007-09-12 10:50 發(fā)表評論
    ]]>
    prototype.js開發(fā)實(shí)例http://www.aygfsteel.com/WshmAndLily/articles/144121.htmlsemovysemovyMon, 10 Sep 2007 15:30:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/144121.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/144121.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/144121.html#Feedback0http://www.aygfsteel.com/WshmAndLily/comments/commentRss/144121.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/144121.html閱讀全文

    semovy 2007-09-10 23:30 發(fā)表評論
    ]]>
    為圖片添加圓角與3D陰影http://www.aygfsteel.com/WshmAndLily/articles/142148.htmlsemovysemovySun, 02 Sep 2007 14:37:00 GMThttp://www.aygfsteel.com/WshmAndLily/articles/142148.htmlhttp://www.aygfsteel.com/WshmAndLily/comments/142148.htmlhttp://www.aygfsteel.com/WshmAndLily/articles/142148.html#Feedback0http://www.aygfsteel.com/WshmAndLily/comments/commentRss/142148.htmlhttp://www.aygfsteel.com/WshmAndLily/services/trackbacks/142148.html為圖片添加圓角與3D陰影

    semovy 2007-09-02 22:37 發(fā)表評論
    ]]>
    主站蜘蛛池模板: 澄城县| 宜兰市| 靖远县| 固始县| 阜城县| 凌云县| 蓝山县| 稷山县| 涞水县| 荃湾区| 威信县| 平凉市| 讷河市| 信丰县| 万全县| 剑阁县| 江源县| 洛扎县| 临江市| 平阳县| 沾益县| 新昌县| 江陵县| 全椒县| 博爱县| 茂名市| 彰武县| 浦东新区| 浦北县| 西昌市| 沙河市| 柘荣县| 四川省| 藁城市| 花莲市| 左贡县| 会东县| 宁陵县| 汾西县| 巫山县| 宜昌市|