MS Atlas(AJAX Control Toolkit)樣本項目的一個小bug

來源:互聯網
上載者:User
近期在研究MS的AJAX Control Toolkit(代號Atlas),其中AlwaysVisibleControl Demonstration樣本有一個小錯誤

完整樣本及源碼是:
http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=AtlasControlToolkit

其中/SampleWebSite/AlwaysVisibleControl/AlwaysVisibleControl.aspx頁面上有一個updateTime函數是不正確的。

function updateTime()
{
    var label = document.getElementById('ctl00_ContentPlaceHolder1_currentTime');
    if (label) {
        var time = (new Date()).toLocaleTimeString();
        time = time.match(/^(\s*\d{1,2}\s*\:\s*\d{1,2}\s*\:\s*\d{1,2}\s*[A-Za-z]{2}).*$/)[1];
        label.innerHTML = time;
    }
}

在中文作業系統或者是地區選項選擇了中國的系統上,將無法工作正常。問題處在正則匹配的地方,因為美國的時間格式是10:50:27 AM,所以可以用(/^(\s*\d{1,2}\s*\:\s*\d{1,2}\s*\:\s*\d{1,2}\s*[A-Za-z]{2}).*$/)來匹配,但是對於中國的時間格式則是11:21:15是不帶AM/PM的,所以匹配結果是null,導致了js錯誤,同時這裡再複習一個小知識,對於正則匹配,數組的0元素包含整個匹配,而第 1 到 n 元素包含了匹配中曾出現過的任一個子匹配。最後,我們將js函數修改如下:

function updateTime()
{
    var label = document.getElementById('ctl00_ContentPlaceHolder1_currentTime');
    if (label) {
        var time = (new Date()).toString();
        time = time.match(/(\d{1,2}\s*\:\s*\d{1,2}\s*\:\s*\d{1,2}).*/)[1];
        label.innerHTML = time;
    }
}

這樣就可以完全相容於所有的地區了。
(全文完)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.