中文字幕二区_国产精品免费在线观看_黄色网站观看_人人草人人澡_日本真实娇小xxxx

您的位置: 首頁 > 技術(shù)文檔 > 網(wǎng)頁制作 > 實現(xiàn)一個日期下拉菜單
靜態(tài)網(wǎng)頁加密 回到列表 js“樹”讀取xml數(shù)據(jù)
 實現(xiàn)一個日期下拉菜單

作者:Qihontin 時間: 2006-01-13 文檔類型:原創(chuàng) 來自:藍色理想

第 1 頁 實現(xiàn)一個日期下拉菜單 [1]
第 2 頁 實現(xiàn)一個日期下拉菜單 [2]
第 3 頁 實現(xiàn)一個日期下拉菜單 [3]

這篇文章的主旨是弄清楚如何根據(jù)實際需求實現(xiàn)一個聯(lián)動菜單以及聯(lián)動菜單的原理,實例是實現(xiàn)一個日期選擇下拉菜單。本文調(diào)試環(huán)境為IE6/firefox1.5。

首先來分析一下日期下拉菜單的需求。建議大家在寫任何程序的時候都應該在動手編程之前想清楚自己需要些什么,這樣編程才有效率。

年份: 一般來說有一個有效年份,比如說1900年至當前年份才是為效的,這個要根據(jù)實際需求來確定,如果是該下拉菜單是用來選擇出生年月日還得把最大的年份減到一定的數(shù)目,如果有人的生日選擇了2005年(即當前的年份),那是不正常的。

月份:沒有什么特殊需求,不管是哪一年都是有十二個月。

天數(shù):每個月的天數(shù)都可能是不定的,當然這可以根據(jù)一定的算法求出來,而它的根據(jù)就是當前選擇的年份和月份。月份都有一個固定的天數(shù),即一、三、五、七、八、十、十二月是三十一天,而四、六、九、十一月是三十天,二月份要根據(jù)當年是否為閏年判斷是二十八天還是二十九天。求當月的天數(shù)我提出一個比較簡單的算法,可以只根據(jù)當前的年份和月份就可以求出當月的天數(shù),這會在后邊講一講思路并將其實現(xiàn)。

好了,現(xiàn)在我們來具體實現(xiàn)這個日期聯(lián)動下拉菜單。

聯(lián)動下拉菜單是以兩個或多個select元素為單位的,為了讓這些菜單更多緊密的工作,我們可以實現(xiàn)一個類用來管理它們的初始化、事件,在這里就使用DateSelector為類名,它有三個屬性,分別為年、月、日的下拉菜單,而這三個select元素是由構(gòu)造函數(shù)的參數(shù)傳進來的,另外為了更靈活地使用它,我們還可以再給DateSelector類的構(gòu)造函數(shù)增加一個(Date對象)或三個參數(shù)(int數(shù)值),表示初始化的年月日。由于參數(shù)個數(shù)不定,我們可以不將另外增加的參數(shù)寫入?yún)?shù)表里,而是在運行時判斷arguments對象的length屬性來執(zhí)行不同的操作。arguments對象存儲了當前函數(shù)的參數(shù)信息,可以查閱一下相關(guān)的資料比如說《Windows腳本技術(shù)》。

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>如何實現(xiàn)一個日期下拉菜單</title>
<script type="text/javascript">
function DateSelector(selYear, selMonth, selDay)
{
    this.selYear = selYear;
    this.selMonth = selMonth;
    this.selDay = selDay;
}
</script>
</head>
<body>
</body>
</html>

接下來開始對聯(lián)動菜單進行初始化,首先是年份,我們可以給類增加一個MinYear屬性表示最小的年份,再增加一個MaxYear表示最大的年份,實現(xiàn)一個InitYearSelect方法初始化年份,實現(xiàn)一個InitMonthSelect方法初始化月份。由于這幾個屬性和方法的思路都是很簡單,就不一一講解,看看代碼是怎么寫的應該就能夠明白,如果對類方面有不清楚有地方可以參考我發(fā)表在無憂腳本另一篇文章《由淺到深了解JavaScript類》。

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>如何實現(xiàn)一個日期下拉菜單</title>
<script type="text/javascript">
function DateSelector(selYear, selMonth, selDay)
{
    this.selYear = selYear;
    this.selMonth = selMonth;
    this.selDay = selDay;
    this.InitYearSelect();
    this.InitMonthSelect();
}

// 增加一個最大年份的屬性
DateSelector.prototype.MinYear = 1900;

// 增加一個最大年份的屬性
DateSelector.prototype.MaxYear = (new Date()).getFullYear();

// 初始化年份
DateSelector.prototype.InitYearSelect = function()
{
    // 循環(huán)添加OPION元素到年份select對象中
    for(var i = this.MaxYear; i >= this.MinYear; i--)
    {
        // 新建一個OPTION對象
        var op = window.document.createElement("OPTION");
       
        // 設(shè)置OPTION對象的值
        op.value = i;
       
        // 設(shè)置OPTION對象的內(nèi)容
        op.innerHTML = i;
       
        // 添加到年份select對象
        this.selYear.appendChild(op);
    }
}

// 初始化月份
DateSelector.prototype.InitMonthSelect = function()
{
    // 循環(huán)添加OPION元素到月份select對象中
    for(var i = 1; i < 13; i++)
    {
        // 新建一個OPTION對象
        var op = window.document.createElement("OPTION");
       
        // 設(shè)置OPTION對象的值
        op.value = i;
       
        // 設(shè)置OPTION對象的內(nèi)容
        op.innerHTML = i;
       
        // 添加到月份select對象
        this.selMonth.appendChild(op);
    }
}
</script>
</head>
<body>
<select id="selYear"></select>
<select id="selMonth"></select>
<select id="selDay"></select>
<script type="text/javascript">
var selYear = window.document.getElementById("selYear");
var selMonth = window.document.getElementById("selMonth");
var selDay = window.document.getElementById("selDay");

// 新建一個DateSelector類的實例,將三個select對象傳進去
new DateSelector(selYear, selMonth ,selDay);
</script>
</body>
</html>

接下來要對天數(shù)進行初始化了,前邊有說過天數(shù)是不定的,那要如何準確求出它的天數(shù)呢?我們稍加分析就知道每個月的最后一天就是該月的天數(shù),相當于下一個月的第一天的前一天,比如說我們要求2005年11月的天數(shù),那我們只需要得到2005年12月一日的前一天即可得到2005年11月最后一天?梢越oDateSelector添加一個方法DaysInMonth來實現(xiàn)該功能。

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>如何實現(xiàn)一個日期下拉菜單</title>
<script type="text/javascript">
function DateSelector(selYear, selMonth, selDay)
{
    this.selYear = selYear;
    this.selMonth = selMonth;
    this.selDay = selDay;
    this.InitYearSelect();
    this.InitMonthSelect();
}

// 增加一個最大年份的屬性
DateSelector.prototype.MinYear = 1900;

// 增加一個最大年份的屬性
DateSelector.prototype.MaxYear = (new Date()).getFullYear();

// 初始化年份
DateSelector.prototype.InitYearSelect = function()
{
    // 循環(huán)添加OPION元素到年份select對象中
    for(var i = this.MaxYear; i >= this.MinYear; i--)
    {
        // 新建一個OPTION對象
        var op = window.document.createElement("OPTION");
       
        // 設(shè)置OPTION對象的值
        op.value = i;
       
        // 設(shè)置OPTION對象的內(nèi)容
        op.innerHTML = i;
       
        // 添加到年份select對象
        this.selYear.appendChild(op);
    }
}

// 初始化月份
DateSelector.prototype.InitMonthSelect = function()
{
    // 循環(huán)添加OPION元素到月份select對象中
    for(var i = 1; i < 13; i++)
    {
        // 新建一個OPTION對象
        var op = window.document.createElement("OPTION");
       
        // 設(shè)置OPTION對象的值
        op.value = i;
       
        // 設(shè)置OPTION對象的內(nèi)容
        op.innerHTML = i;
       
        // 添加到月份select對象
        this.selMonth.appendChild(op);
    }
}

// 根據(jù)年份與月份獲取當月的天數(shù)
DateSelector.DaysInMonth = function(year, month)
{
    var date = new Date(year, month, 0);
    return date.getDate();
}
</script>
</head>
<body>
<select id="selYear"></select>
<select id="selMonth"></select>
<select id="selDay"></select>
<script type="text/javascript">
var selYear = window.document.getElementById("selYear");
var selMonth = window.document.getElementById("selMonth");
var selDay = window.document.getElementById("selDay");

// 新建一個DateSelector類的實例,將三個select對象傳進去
new DateSelector(selYear, selMonth ,selDay);
alert("2004年2月的天數(shù)為" + DateSelector.DaysInMonth(2004, 2));
alert("2005年2月的天數(shù)為" + DateSelector.DaysInMonth(2005, 2));
</script>
</body>
</html>

很明顯,這種方法根本不需要考慮到該年份是否為閏年就可以輕松求出指定月的天數(shù)。另外,有些網(wǎng)友可能會對“var date = new Date(year, month, 0);”這句代碼覺得奇怪,傳入的是2005,2,0,這看起來似乎是求二月份第一天的前一天即一月份的最后一天,為什么還會得到二月份的天數(shù)?這里必須說明一天,JavaScript的Date對象里的月份是由0開始到11結(jié)束,也就是說0表示一月,2表示三月,所以就有這種錯覺,在使用JavaScript的Date對象時要特別注意這一點。

出處:藍色理想
責任編輯:moby

上一頁 下一頁 實現(xiàn)一個日期下拉菜單 [2]

◎進入論壇網(wǎng)頁制作、網(wǎng)站綜合版塊參加討論

相關(guān)文章 更多相關(guān)鏈接
基于 Ajax 的無限級菜單
flash8與javascript集成
web關(guān)聯(lián)菜單實現(xiàn)方法
手機GUI二級菜單設(shè)計說明
JavaScript實用的一些技巧
關(guān)鍵字搜索 常規(guī)搜索 推薦文檔
熱門搜索:CSS Fireworks 設(shè)計比賽 網(wǎng)頁制作 web標準 用戶體驗 UE photoshop Dreamweaver Studio8 Flash 手繪 CG
站點最新 站點最新列表
周大!熬•自然”設(shè)計大賽開啟
國際體驗設(shè)計大會7月將在京舉行
中國國防科技信息中心標志征集
云計算如何讓安全問題可控
云計算是多數(shù)企業(yè)唯一擁抱互聯(lián)網(wǎng)的機會
阿里行云
云手機年終巨獻,送禮標配299起
阿里巴巴CTO王堅的"云和互聯(lián)網(wǎng)觀"
1499元買真八核 云OS雙蛋大促
首屆COCO桌面手機主題設(shè)計大賽
欄目最新 欄目最新列表
淺談JavaScript編程語言的編碼規(guī)范
如何在illustrator中繪制臺歷
Ps簡單繪制一個可愛的鉛筆圖標
數(shù)據(jù)同步算法研究
用ps作簡單的作品展示頁面
CSS定位機制之一:普通流
25個最佳最閃亮的Eclipse開發(fā)項目
Illustrator中制作針線縫制文字效果
Photoshop制作印刷凹凸字體
VS2010中創(chuàng)建自定義SQL Rule
>> 分頁 首頁 前頁 后頁 尾頁 頁次:1/31個記錄/頁 轉(zhuǎn)到 頁 共3個記錄

藍色理想版權(quán)申明:除部分特別聲明不要轉(zhuǎn)載,或者授權(quán)我站獨家播發(fā)的文章外,大家可以自由轉(zhuǎn)載我站點的原創(chuàng)文章,但原作者和來自我站的鏈接必須保留(非我站原創(chuàng)的,按照原來自一節(jié),自行鏈接)。文章版權(quán)歸我站和作者共有。

轉(zhuǎn)載要求:轉(zhuǎn)載之圖片、文件,鏈接請不要盜鏈到本站,且不準打上各自站點的水印,亦不能抹去我站點水印。

特別注意:本站所提供的攝影照片,插畫,設(shè)計作品,如需使用,請與原作者聯(lián)系,版權(quán)歸原作者所有,文章若有侵犯作者版權(quán),請與我們聯(lián)系,我們將立即刪除修改。

您的評論
用戶名:  口令:
說明:輸入正確的用戶名和密碼才能參與評論。如果您不是本站會員,你可以注冊 為本站會員。
注意:文章中的鏈接、內(nèi)容等需要修改的錯誤,請用報告錯誤,以利文檔及時修改。
不評分 1 2 3 4 5
注意:請不要在評論中含與內(nèi)容無關(guān)的廣告鏈接,違者封ID
請您注意:
·不良評論請用報告管理員,以利管理員及時刪除。
·尊重網(wǎng)上道德,遵守中華人民共和國的各項有關(guān)法律法規(guī)
·承擔一切因您的行為而直接或間接導致的民事或刑事法律責任
·本站評論管理人員有權(quán)保留或刪除其管轄評論中的任意內(nèi)容
·您在本站發(fā)表的作品,本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用
·參與本評論即表明您已經(jīng)閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評論文檔 | 報告錯誤  
專業(yè)書推薦 更多內(nèi)容
網(wǎng)站可用性測試及優(yōu)化指南
《寫給大家看的色彩書1》
《跟我去香港》
眾妙之門—網(wǎng)站UI 設(shè)計之道
《Flex 4.0 RIA開發(fā)寶典》
《贏在設(shè)計》
犀利開發(fā)—jQuery內(nèi)核詳解與實踐
作品集 更多內(nèi)容

雜⑦雜⑧ Gold NORMANA V2