ricegun

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            2 Posts :: 4 Stories :: 3 Comments :: 0 Trackbacks

          怎么用 javascript 做數(shù)據(jù)的格式化

          ?

          作者:老 K

          ???????? 我們在項(xiàng)目中都有用過金額數(shù)字及日期等數(shù)據(jù)格式化輸出顯示,比如前面加上“¥”,數(shù)值取小數(shù)點(diǎn)后兩位,短日期時(shí)間等。一般的高級語言及開發(fā)工具都有提供相應(yīng)的轉(zhuǎn)換函數(shù)如 format 之類,可是我在最近做 web 網(wǎng)上銀行相關(guān)的系統(tǒng)時(shí),卻遇到這個(gè)很麻煩的問題,就是 javascript 不提供這種 format 函數(shù),查了些資料,知道 vbscript 是有格式化函數(shù)的,可是 vbscript 是微軟專用的,無奈只好用正則表達(dá)式,可正則表達(dá)式也不能夠很通用地解決各種類型轉(zhuǎn)換問題,真的是很郁悶,無意中找到看到一個(gè) AJAX 開發(fā)工具的演示(工具下載地址是點(diǎn)擊鏈接),看到它的數(shù)據(jù)有顯示“¥”和數(shù)值小數(shù)點(diǎn)后兩位格式化,馬上下載了看了下,發(fā)現(xiàn)它居然是用 javascript+XSL 實(shí)現(xiàn)了通用的格式化函數(shù),下載 AJAX WebShop 后,我找到它的 system.js 這個(gè)文件,打開找到以下函數(shù):

          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=''+value+''+mask+'';

          ???????? xmlDoc=parseXML(v);

          ?

          ???????? var x;

          ???????? if(isIE)

          ?????????????????? x=''

          ???????? else

          ?????????????????? x='';

          ???????? x+='';

          ???????? if(isIE) {

          ?????????????????? x+=''+action+'('+value+',"'+mask+'"';

          ?????????????????? if(param)x+=','+param;

          ?????????????????? x+=')';

          ???????? }

          ???????? else

          ?????????????????? x+='';

          ?

          ???????? x+='';

          ???????? 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 用得可真是出神入化了,居然這樣就可以實(shí)現(xiàn)很通用的格式化轉(zhuǎn)換了,當(dāng)然不客氣了,直接加到我的函數(shù)庫中哈。

          ???????? 這個(gè)代碼偶沒有看得很懂,不過確實(shí)很管用,請對 XSL 精通的朋友分析下也好讓我們學(xué)習(xí)下。

          posted on 2007-01-05 09:22 第七日 閱讀(976) 評論(1)  編輯  收藏

          Feedback

          # re: 怎么用javascript做數(shù)據(jù)的格式化[未登錄] 2007-06-03 00:38 -274°C
          如果可以的話,能給我一個(gè)嗎?謝謝了。
          我QQ 是 51411970
          郵箱是 hechangmin1983@126.com
          我對xsl也不熟悉,我只是希望在頁面上用到格式化。
          下載時(shí)候,我這邊有點(diǎn)問題。  回復(fù)  更多評論
            


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 岑巩县| 饶河县| 新龙县| 兴山县| 罗山县| 沛县| 蕉岭县| 怀柔区| 博爱县| 东宁县| 遂宁市| 盖州市| 施甸县| 昆山市| 武义县| 安庆市| 鸡东县| 九江县| 鄱阳县| 南汇区| 通许县| 修武县| 临漳县| 金华市| 依安县| 乌什县| 大兴区| 成武县| 白城市| 介休市| 巫溪县| 淄博市| 康马县| 淳化县| 罗山县| 泾川县| 乌审旗| 资源县| 临潭县| 盘锦市| 垣曲县|