国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

Juery解決tablesorter中文排序和字符范圍的方法

2024-05-06 16:19:29
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了Juery解決tablesorter中文排序和字符范圍的方法,實例分析了jQuery針對tablesorter中文排序和字符范圍的解決方法,需要的朋友可以參考下

本文實例講述了Juery解決tablesorter中文排序和字符范圍的方法。分享給大家供大家參考。具體分析如下:

tablesorter是jQuery插件中比較優秀的一款表格排序插件,我相信大家都使用過或有所耳聞,我在這里就不過多介紹了,詳細信息可以看看官方網站:http://tablesorter.com/docs/(其中的demo做得比較完整)。

在使用了tablesorter開發的幾個項目中,發現了兩種類型的排序存在問題,如下:

第一個問題是無法對中文字符進行排序,這是因為在對字符排序時,是使用的unicode值進行的字符大小比較,代碼如下:

Js代碼

 

 
  1. function sortText(a,b) { 
  2. return ((a < b) ? -1 : ((a > b) ? 1 : 0)); 
  3. }; 
  4. function sortTextDesc(a,b) { 
  5. return ((b < a) ? -1 : ((b > a) ? 1 : 0)); 
  6. }; 
  7. function sortText(a,b) { 
  8. return ((a < b) ? -1 : ((a > b) ? 1 : 0)); 
  9. }; 
  10. function sortTextDesc(a,b) { 
  11. return ((b < a) ? -1 : ((b > a) ? 1 : 0)); 
  12. }; 

而我們想要得到的結果是按漢字拼音進行順序進行排序,因此我們將代碼修改為以下代碼即可:

Js代碼

 

 
  1. function sortText(a,b) { 
  2. return a.localeCompare(b); 
  3. }; 
  4. function sortTextDesc(a,b) { 
  5. return b.localeCompare(a); 
  6. }; 
  7. function sortText(a,b) { 
  8. return a.localeCompare(b); 
  9. }; 
  10. function sortTextDesc(a,b) { 
  11. return b.localeCompare(a); 
  12. }; 

localeCompare方法是JS自帶的方法,不用多說,望文生義就知道這個方法是根據當前區域下對字符的大小進行比較,不過這個方法無法處理多音字。

第二個問題是無法對超出了范圍的數值型數據進行排序,這是因為在進行數值類型轉換時,存在數據值失真的情況,例如:

Js代碼

 

 
  1. alert(parseFloat('9999999999999999')); // 10000000000000000 
  2. alert(parseFloat('10000000000000001')); // 10000000000000000 
  3. alert(parseFloat('10000000000000004')); // 10000000000000004 
  4. alert(parseFloat('10000000000000005')); // 10000000000000004 
  5. alert(parseFloat('10000000000000006')); // 10000000000000006 
  6. alert(parseFloat('9999999999999999')); // 10000000000000000 
  7. alert(parseFloat('10000000000000001')); // 10000000000000000 
  8. alert(parseFloat('10000000000000004')); // 10000000000000004 
  9. alert(parseFloat('10000000000000005')); // 10000000000000004 
  10. alert(parseFloat('10000000000000006')); // 10000000000000006 

這樣的偏差會使得排序結果不準確,為了避免這種問題,應該不使用原始值進行比較,而是應該引入權值,數值從左到右,每一位數值對應的權值遞減,然后根據權值和原始值計算出的新值用于比較,這就只需要修改formatFloat方法就能解決這個問題了。

Js代碼

 

 
  1. this.formatFloat = function(s) {  
  2. // TODO  
  3. var i = parseFloat(s);  
  4. return (isNaN(i)) ? 0 : i;  
  5. }; 

希望本文所述對大家的jQuery程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 甘洛县| 黄骅市| 岗巴县| 上杭县| 平潭县| 昔阳县| 葵青区| 宁陕县| 齐河县| 克山县| 灌阳县| 额济纳旗| 洛浦县| 浪卡子县| 游戏| 衡阳市| 元谋县| 威远县| 图们市| 饶阳县| 平谷区| 龙南县| 湟源县| 涞水县| 大悟县| 阳高县| 濮阳市| 米易县| 柳州市| 谢通门县| 兴安盟| 宝丰县| 华宁县| 巴马| 兴业县| 平顶山市| 福清市| 溆浦县| 马尔康县| 甘谷县| 社旗县|