论坛首页 Web前端技术论坛

怎么用javascript做数据的格式化

浏览 4296 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-12-27  

怎么用javascript做数据的格式化<o:p></o:p>

<o:p> </o:p>

作者:老K<o:p></o:p>

         我们在项目中都有用过金额数字及日期等数据格式化输出显示,比如前面加上“¥”,数值取小数点后两位,短日期时间等。一般的高级语言及开发工具都有提供相应的转换函数如format之类,可是我在最近做web网上银行相关的系统时,却遇到这个很麻烦的问题,就是javascript不提供这种format函数,查了些资料,知道vbscript是有格式化函数的,可是vbscript是微软专用的,无奈只好用正则表达式,可正则表达式也不能够很通用地解决各种类型转换问题,真的是很郁闷,无意中找到看到一个AJAX开发工具的演示(工具下载地址是点击链接),看到它的数据有显示“¥”和数值小数点后两位格式化,马上下载了看了下,发现它居然是用javascript+XSL实现了通用的格式化函数,下载AJAX WebShop后,我找到它的system.js这个文件,打开找到以下函数:<o:p></o:p>

function FormatFloat(value,mask)<o:p></o:p>

{<o:p></o:p>

         return BasicFormat(value,mask,'FormatNumber')<o:p></o:p>

}<o:p></o:p>

function FormatDate(varDate, bstrFormat, varDestLocale)<o:p></o:p>

{<o:p></o:p>

         return BasicFormat(varDate,bstrFormat,'FormatDate',varDestLocale);<o:p></o:p>

}<o:p></o:p>

function FormatTime(varTime, bstrFormat, varDestLocale)<o:p></o:p>

{<o:p></o:p>

         return BasicFormat(varTime,bstrFormat,'FormatTime',varDestLocale);<o:p></o:p>

}<o:p></o:p>

function BasicFormat(value,mask,action,param)<o:p></o:p>

{<o:p></o:p>

         var xmlDoc;<o:p></o:p>

         var xslDoc;<o:p></o:p>

         var v='<formats><format><value>'+value+'</value><mask>'+mask+'</mask></format></formats>';<o:p></o:p>

         xmlDoc=parseXML(v);<o:p></o:p>

<o:p> </o:p>

         var x; <o:p></o:p>

         if(isIE)<o:p></o:p>

                   x='<xsl:stylesheet xmlns:xsl="uri:xsl">'<o:p></o:p>

         else<o:p></o:p>

                   x='<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">';<o:p></o:p>

         x+='<xsl:template match="/">';<o:p></o:p>

         if(isIE) {<o:p></o:p>

                   x+='<xsl:eval>'+action+'('+value+',"'+mask+'"';<o:p></o:p>

                   if(param)x+=','+param;<o:p></o:p>

                   x+=')</xsl:eval>';<o:p></o:p>

         }<o:p></o:p>

         else<o:p></o:p>

                   x+='<xsl:value-of select="format-number('+value+',\''+mask+'\')" />';<o:p></o:p>

<o:p> </o:p>

         x+='</xsl:template></xsl:stylesheet>';<o:p></o:p>

         xslDoc=parseXML(x);<o:p></o:p>

         var s;<o:p></o:p>

         if(isIE)<o:p></o:p>

          s= xmlDoc.transformNode(xslDoc)<o:p></o:p>

         else{<o:p></o:p>

                   //for mozilla/netscape <o:p></o:p>

        var processor = new XSLTProcessor(); <o:p></o:p>

                   processor.importStylesheet(xslDoc);<o:p></o:p>

                   var result = processor.transformToFragment(xmlDoc, xmlDoc);<o:p></o:p>

        var xmls = new XMLSerializer(); <o:p></o:p>

        s = xmls.serializeToString(result);<o:p></o:p>

         }<o:p></o:p>

         return s;<o:p></o:p>

}<o:p></o:p>

看来他们对xsl用得可真是出神入化了,居然这样就可以实现很通用的格式化转换了,当然不客气了,直接加到我的函数库中哈。<o:p></o:p>

         这个代码偶没有看得很懂,不过确实很管用,请对XSL精通的朋友分析下也好让我们学习下。<o:p></o:p>

   发表时间:2006-12-27  
兄弟,还缺xsl文件呢,一并上来吧
0 请登录后投票
   发表时间:2006-12-27  
不错,我们在处理电价的时候本来想在价格前面加上¥符号的,可是显示的时候有乱码,就放弃了!
参考一下LZ的!呵呵!
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics