实施 TableSorter 以包含数百万和数十亿的价格

发布于 2024-12-18 00:27:55 字数 255 浏览 1 评论 0原文

我在 jquery 中使用 TableSorter 插件。然而,表中的一列如下所示:


市值

  • $12M
  • $1.2B
  • $3B
  • $34M

并且 TableSorter 无法正常工作。知道如何解决它。我可以使用任何其他插件吗?

PS:我无法取消后缀 M & B. 所以我无法从数学上修改市值以使其正常工作。

谢谢

I am using the TableSorter plugin in jquery. However one of the column in the table is listed as follows :


Market Cap

  • $12M
  • $1.2B
  • $3B
  • $34M

And the TableSorter is not working properly. Any idea how to fix it. Any other plugin which I can use ?

P.S: I cannot do-away with suffix M & B. So I cannot Mathematically modify the Market cap so that it works properly.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

这个俗人 2024-12-25 00:27:55

检查这个小提琴

浏览TableSorter 的文档 看起来您可以创建一个自定义解析器。

创建了这个简单的解析器,它看起来可以解决问题

$.tablesorter.addParser({
        // set a unique id
        id: 'marketcap',
        is: function(s) {
            // return false so this parser is not auto detected
            return false;
        },
        format: function(s) {
            s = s.replace('
,'');
            if(s.indexOf('M') >-1){
                s = parseInt(s)* 1000000;
            }else if(s.indexOf('B') >-1){
                s = parseInt(s)* 1000000000;
            }

            // format your data for normalization
            return s;
        },
        // set type, either numeric or text
        type: 'numeric'
    });

Check this fiddle out

Looking through the docs of TableSorter it looks like you can create a custom parser.

Created this simply parser and it looks to do the trick

$.tablesorter.addParser({
        // set a unique id
        id: 'marketcap',
        is: function(s) {
            // return false so this parser is not auto detected
            return false;
        },
        format: function(s) {
            s = s.replace('
,'');
            if(s.indexOf('M') >-1){
                s = parseInt(s)* 1000000;
            }else if(s.indexOf('B') >-1){
                s = parseInt(s)* 1000000000;
            }

            // format your data for normalization
            return s;
        },
        // set type, either numeric or text
        type: 'numeric'
    });
夜雨飘雪 2024-12-25 00:27:55

阿明的回答很好。也可以与“K”一起使用,或者可以与任何其他措施一起使用。所以完整的例子是:

$.tablesorter.addParser({
    // set a unique id
    id: 'marketcap',
    is: function(s) {
        // return false so this parser is not auto detected
        return false;
    },
    format: function(s) {
        s = s.replace('

对于像这样的 html:

<table cellspacing="1" class="tablesorter">             
<thead>> 
    <tr> 

        <th>english</th> 
        <th>japanese</th> 
        <th>calculus</th> 
        <th>Market Cap</th> 
    </tr> 
</thead> 
<tbody> 
    <tr> 

        <td>80</td> 
        <td>70</td> 
        <td>75</td> 
        <td>$34M</td> 
    </tr> 
    <tr> 

        <td>90</td> 
        <td>88</td> 
        <td>100</td> 
        <td>$1.2B</td> 
    </tr> 
    <tr> 

        <td>85</td> 
        <td>95</td> 
        <td>80</td> 
        <td>$12M</td> 
    </tr> 
</tbody> 

,''); if(s.indexOf('K') >-1){ s = parseInt(s)* 1000; }else if(s.indexOf('M') >-1){ s = parseInt(s)* 1000000; }else if(s.indexOf('B') >-1){ s = parseInt(s)* 1000000000; } // format your data for normalization return s; }, // set type, either numeric or text type: 'numeric' }); $(function() { $("table").tablesorter({ headers: { 3: { sorter:'marketcap' } } }); });

对于像这样的 html:

Amin's answer is good. Also with "K" or it can be used with any other measure. So the complete example would be:

$.tablesorter.addParser({
    // set a unique id
    id: 'marketcap',
    is: function(s) {
        // return false so this parser is not auto detected
        return false;
    },
    format: function(s) {
        s = s.replace('

For an html like:

<table cellspacing="1" class="tablesorter">             
<thead>> 
    <tr> 

        <th>english</th> 
        <th>japanese</th> 
        <th>calculus</th> 
        <th>Market Cap</th> 
    </tr> 
</thead> 
<tbody> 
    <tr> 

        <td>80</td> 
        <td>70</td> 
        <td>75</td> 
        <td>$34M</td> 
    </tr> 
    <tr> 

        <td>90</td> 
        <td>88</td> 
        <td>100</td> 
        <td>$1.2B</td> 
    </tr> 
    <tr> 

        <td>85</td> 
        <td>95</td> 
        <td>80</td> 
        <td>$12M</td> 
    </tr> 
</tbody> 

,''); if(s.indexOf('K') >-1){ s = parseInt(s)* 1000; }else if(s.indexOf('M') >-1){ s = parseInt(s)* 1000000; }else if(s.indexOf('B') >-1){ s = parseInt(s)* 1000000000; } // format your data for normalization return s; }, // set type, either numeric or text type: 'numeric' }); $(function() { $("table").tablesorter({ headers: { 3: { sorter:'marketcap' } } }); });

For an html like:

夏至、离别 2024-12-25 00:27:55

缺少一些东西!!
在上面的示例中,其中一个值是 $1.2B,然后 parseInt(s) 会将其转换为整数。
考虑使用:parseFloat() & toFixed() 用于考虑小数

$.tablesorter.addParser({
    // set a unique id
    id: 'marketcap',
    is: function(s) {
        // return false so this parser is not auto detected
        return false;
    },
    format: function(s) {
        s = s.replace('
,'');
        if(s.indexOf('K') >-1){
            s = parseFloat(s).toFixed(3) * 1000;
        }else if(s.indexOf('M') >-1){
            s = parseFloat(s).toFixed(3) * 1000000;
        }else if(s.indexOf('B') >-1){
            s = parseFloat(s).toFixed(3) * 1000000000;
        }

        // format your data for normalization
        return s;
    },
    // set type, either numeric or text
    type: 'numeric'
});

$(function() {
    $("table").tablesorter({
        headers: {
            3: {
                sorter:'marketcap' // sorting (4th column with parser)
            }
        }
    });
});             

Missing something!!
In the example above one of the values is $1.2B, then parseInt(s) will convert it to integer.
Consider using instead: parseFloat() & toFixed() for decimals to consider

$.tablesorter.addParser({
    // set a unique id
    id: 'marketcap',
    is: function(s) {
        // return false so this parser is not auto detected
        return false;
    },
    format: function(s) {
        s = s.replace('
,'');
        if(s.indexOf('K') >-1){
            s = parseFloat(s).toFixed(3) * 1000;
        }else if(s.indexOf('M') >-1){
            s = parseFloat(s).toFixed(3) * 1000000;
        }else if(s.indexOf('B') >-1){
            s = parseFloat(s).toFixed(3) * 1000000000;
        }

        // format your data for normalization
        return s;
    },
    // set type, either numeric or text
    type: 'numeric'
});

$(function() {
    $("table").tablesorter({
        headers: {
            3: {
                sorter:'marketcap' // sorting (4th column with parser)
            }
        }
    });
});             
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文