Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript sort()函数不起作用_Javascript_Jquery - Fatal编程技术网

Javascript sort()函数不起作用

Javascript sort()函数不起作用,javascript,jquery,Javascript,Jquery,当然,问题不在函数中,但正如下面的代码所示,有必要单击两次以按降序~升序排序。我怎样才能解决这个问题 我认为这方面的错误是: function lxp(a, b){ var adate = new Date($(a).attr("data-date")); var bdate = new Date($(b).attr("data-date")); if(tipo == 'acrescente'){ return adate > bdate ? -1

当然,问题不在函数中,但正如下面的代码所示,有必要单击两次以按降序~升序排序。我怎样才能解决这个问题

我认为这方面的错误是:

function lxp(a, b){
    var adate = new Date($(a).attr("data-date"));
    var bdate = new Date($(b).attr("data-date"));
    if(tipo == 'acrescente'){
        return adate > bdate ? -1 : 1;
    }else if(tipo == 'decrescente'){
        return adate > bdate ? 1 : -1;
    }
}

尝试将0添加到小于10的月份,如
  • 而不是
  • 我在你的小提琴a中这样做了,列表在第一次点击时就被排序了

    编辑:更新的小提琴()

    我明白了。不行

    • 2015年
    • 2012年
    • 2010年
    • 2010年
    • 2009年
    • 2008年

      • 尝试将0添加到小于10的月份,如
      • 而不是
      • 我在你的小提琴a中这样做了,列表在第一次点击时就被排序了

        编辑:更新的小提琴()

        我明白了。不行

        • 2015年
        • 2012年
        • 2010年
        • 2010年
        • 2009年
        • 2008年
        我从
        adate
        bdate
        中得到了“无效日期”错误,因此我将您的日期字符串转换为数字(使用
        parseInt

        我从
        adate
        bdate
        中得到了“无效日期”错误,因此我将日期字符串转换为数字(使用
        parseInt
        )并正常工作


        将javascriptcode替换为:

        $(function(){
            var tllp = 15;
            $('#blocoSite li').each(function(i, lep){
                $(lep).css({ top : tllp });
                tllp += 15;
            });
        });
        
        function orderDate(tipo){
            $('#ordered').remove();
            var nposX = 0;
            var nposY = 0;
        
            if(tipo == 'acrescente'){
                $("#ordeData").attr({'onclick' : 'orderDate("decrescente");'});
            }else if(tipo == 'decrescente'){
                $("#ordeData").attr({'onclick' : 'orderDate("acrescente");'});
            }
        
        
            function lxp(a, b){
                var adate = new Date($(a).attr("data-date"));
                var bdate = new Date($(b).attr("data-date"));
                if(tipo == 'acrescente'){
                    return adate > bdate ? -1 : 1;
                }else if(tipo == 'decrescente'){
                    return adate < bdate ? -1 : 1;
                }
            }
            var order="";
            nposY = 0;
            $("#blocoSite li").sort(lxp).each(function(i, el){
                order += el.outerHTML+"\n";
                nposY += 15;
        
                $(this).animate({
                    left: 200,
                    top :  nposY
                }, 800);
            });
            $('#ordered').html(order);
        }
        
        $(函数(){
        var-tllp=15;
        $('blocoSite li')。每个(函数(i,lep){
        $(lep.css({top:tllp});
        tllp+=15;
        });
        });
        功能订单日期(tipo){
        $('#ordered')。删除();
        var-nposX=0;
        var-nposY=0;
        如果(tipo=='acrescente'){
        $(“#ordeData”).attr({'onclick':'orderDate(“decrescente”);');
        }否则,如果(tipo=='decrescente'){
        $(“#ordeData”).attr({'onclick':'orderDate(“acrescente”);');
        }
        函数lxp(a,b){
        var adate=新日期($(a).attr(“数据日期”);
        var bdate=新日期($(b).attr(“数据日期”);
        如果(tipo=='acrescente'){
        返回日期>b日期?-1:1;
        }否则,如果(tipo=='decrescente'){
        返回日期

        通过这种方式,您将按排序顺序放置列表项,而不是根据项的旧位置(除了排序之外)进行排序

        将javascriptcode替换为:

        $(function(){
            var tllp = 15;
            $('#blocoSite li').each(function(i, lep){
                $(lep).css({ top : tllp });
                tllp += 15;
            });
        });
        
        function orderDate(tipo){
            $('#ordered').remove();
            var nposX = 0;
            var nposY = 0;
        
            if(tipo == 'acrescente'){
                $("#ordeData").attr({'onclick' : 'orderDate("decrescente");'});
            }else if(tipo == 'decrescente'){
                $("#ordeData").attr({'onclick' : 'orderDate("acrescente");'});
            }
        
        
            function lxp(a, b){
                var adate = new Date($(a).attr("data-date"));
                var bdate = new Date($(b).attr("data-date"));
                if(tipo == 'acrescente'){
                    return adate > bdate ? -1 : 1;
                }else if(tipo == 'decrescente'){
                    return adate < bdate ? -1 : 1;
                }
            }
            var order="";
            nposY = 0;
            $("#blocoSite li").sort(lxp).each(function(i, el){
                order += el.outerHTML+"\n";
                nposY += 15;
        
                $(this).animate({
                    left: 200,
                    top :  nposY
                }, 800);
            });
            $('#ordered').html(order);
        }
        
        $(函数(){
        var-tllp=15;
        $('blocoSite li')。每个(函数(i,lep){
        $(lep.css({top:tllp});
        tllp+=15;
        });
        });
        功能订单日期(tipo){
        $('#ordered')。删除();
        var-nposX=0;
        var-nposY=0;
        如果(tipo=='acrescente'){
        $(“#ordeData”).attr({'onclick':'orderDate(“decrescente”);');
        }否则,如果(tipo=='decrescente'){
        $(“#ordeData”).attr({'onclick':'orderDate(“acrescente”);');
        }
        函数lxp(a,b){
        var adate=新日期($(a).attr(“数据日期”);
        var bdate=新日期($(b).attr(“数据日期”);
        如果(tipo=='acrescente'){
        返回日期>b日期?-1:1;
        }否则,如果(tipo=='decrescente'){
        返回日期

        通过这种方式,您将按排序顺序放置列表项,而不是根据项的旧位置(除了排序之外)进行排序

        对我来说,这似乎是最直接的方法:

        $(函数(){
        var-tllp=15;
        $('blocoSite li')。每个(函数(i,lep){
        $(lep.css({top:tllp});
        tllp+=15;
        });
        });
        $(文档).ready(函数(){
        var tipo=“递减”;
        $('#ordeData')。单击(函数(){
        tipo=tipo==“acrescente”?“decrescente”:“acrescente”
        var-nposY=0;
        函数lxp(a,b){
        var adate=新日期($(a).attr(“数据日期”);
        var bdate=新日期($(b).attr(“数据日期”);
        如果(tipo=='acrescente'){
        返回日期>b日期?-1:1;
        }否则,如果(tipo=='decrescente'){
        返回日期
        附带HTML

        <ul id="blocoSite">
            <li data-date="2010-05-12">2010</li>
            <li data-date="2012-05-12">2012</li>
            <li data-date="2015-05-12">2015</li>
            <li data-date="2008-05-12">2008</li>
            <li data-date="2009-05-12">2009</li>
            <li data-date="2010-05-12">2010</li>
        </ul>
        <button id="ordeData">CLICK</button>
        
        • 2010年
        • 2012年
        • 2015年
        • 2008
        • 2009
        • 2010年
        点击
        对我来说,这似乎是最直接的方法:

        $(函数(){
        var-tllp=15;
        $('blocoSite li')。每个(函数(i,lep){
        $(lep.css({top:tllp});
        tllp+=15;
        });
        });
        $(文档).ready(函数(){
        var tipo=“递减”;
        $('#ordeData')。单击(函数(){
        tipo=tipo==“acrescente”?“decrescente”:“acrescente”
        var-nposY=0;
        函数lxp(a,b){
        var adate=新日期($(a).attr(“数据日期”);
        var bdate=新日期($(b).attr(“数据日期”);
        如果(tipo=='acrescente'){
        返回日期>b日期?-1:1;
        }否则,如果(tipo=='decrescente'){
        返回日期