怎么用javascript做数据的格式化

来源:互联网 发布:吉利知豆d2能跑多远 编辑:程序博客网 时间:2024/04/28 02:03
 
怎么用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精通的朋友分析下也好让我们学习下。
 
原创粉丝点击