怎麼用javascript做數據的格式化

怎麼用javascript做數據的格式化
       我們在項目中都有用過金額數字及日期等數據格式化輸出顯示,比如前面加上“¥”,數值取小數點後兩位,短日期時間等。一般的高級語言及開發工具都有提供相應的轉換函數如format之類,可是我在最近做web網上銀行相關的系統時,卻遇到這個很麻煩的問題,就是javascript不提供這種format函數,查了些資料,知道vbscript是有格式化函數的,可是vbscript是微軟專用的,無奈只好用正則表達式,可正則表達式也不能夠很通用地解決各種類型轉換問題,真的是很鬱悶,無意中找到看到一個AJAX開發工具的演示,看到它的數據有顯示“¥”和數值小數點後兩位格式化,馬上下載了看了下,發現它居然是用javascript+XSL實現了通用的格式化函數,下載AJAX WebShop後,我找到它的system.js這個文件,打開找到以下函數:
function FormatFloat(value,mask)
{
       return BasicFormat(value,mask,'FormatNumber')
}
function FormatDate(varDate, bstrFormat, varDestLocale)
{
       return BasicFormat(varDate,bstrFormat,'FormatDate',varDestLocale);
}
function FormatTime(varTime, bstrFormat, varDestLocale)
{
       return BasicFormat(varTime,bstrFormat,'FormatTime',varDestLocale);
}
function BasicFormat(value,mask,action,param)
{
       var xmlDoc;
       var xslDoc;
       var v='<formats><format><value>'+value+'</value><mask>'+mask+'</mask></format></formats>';
       xmlDoc=parseXML(v);
 
       var x;
       if(isIE)
              x='<xsl:stylesheet xmlns:xsl="uri:xsl">'
       else
              x='<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">';
       x+='<xsl:template match="/">';
       if(isIE) {
              x+='<xsl:eval>'+action+'('+value+',"'+mask+'"';
              if(param)x+=','+param;
              x+=')</xsl:eval>';
       }
       else
              x+='<xsl:value-of select="format-number('+value+',/''+mask+'/')" />';
 
       x+='</xsl:template></xsl:stylesheet>';
       xslDoc=parseXML(x);
       var s;
       if(isIE)
        s= xmlDoc.transformNode(xslDoc)
       else{
              //for mozilla/netscape
        var processor = new XSLTProcessor();
              processor.importStylesheet(xslDoc);
              var result = processor.transformToFragment(xmlDoc, xmlDoc);
        var xmls = new XMLSerializer();
        s = xmls.serializeToString(result);
       }
       return s;
}
看來他們對xsl用得可真是出神入化了,居然這樣就可以實現很通用的格式化轉換了,當然不客氣了,直接加到我的函數庫中哈。
       這個代碼偶沒有看得很懂,不過確實很管用,請對XSL精通的朋友分析下也好讓我們學習下。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章