0

だから私はこのjavascript関数reOrderJSONを持っていて、配列を注文し、引数orderが「逆」に等しい場合、ソートされた直後に配列を逆にします。

関連リンクのクリック イベントにバインドされた関数もあります。

function reOrderJSON(subj,att,order,limit){

    subj.sort(function (a, b,order) {


        a = a[att],
        b = b[att];

        return a.localeCompare(b);


    });

    if(order === "reverse"){
        subj.reverse();
        console.log("Reverse passed a parameter to reOrderJSON")
    }



    layoutDate(subj,limit)
    return depos = subj;
}

function clickReorder(e){
        var orderingLink = e.target;
        var reverseOrder = "";

        var order = $(orderingLink).attr('data-order');
        if(order === "desc" || order === "undefined"){
            $(orderingLink).attr('data-order','asc');
            console.log("Order detected as "+order)
            reverseOrder = false;

        }else{
            $(orderingLink).attr('data-order','desc');
            console.log("Order detected as "+order)

            reverseOrder = "reverse";
        }

        var limit = $('.entries-per-page').val();

        reOrderJSON(e.data.orderedObject,$(e.target).data('assoc'),reverseOrder,limit);

        $('.result th').css('background','transparent');
        $(orderingLink).closest('th').css({'background':'pink'});


        return false;
}

$('.result').on("click", "th a", { orderedObject: depos }, clickReorder);

リンクは最初は次のようになります。

<th><a href="#" data-assoc="county">County</a></th>

ご覧のとおり、何が起こっているかを伝えるためにデバッグ テキストをログに記録しています。リンクを初めてクリックすると、常に次の 2 行がログに返されます。 Order detected as undefined Reverse passed a parameter to reOrderJSON

これがどのように起こっているのかわかりません。初めてorderとして渡されるべきではありません。"reverse"ここで何が欠けていますか?

depos違いがある場合は、配列オブジェクトです。

4

1 に答える 1

3

あなたの比較

order === "undefined"

は現在文字列" undefined"をチェックしていますが、実際には変数の未定義の値をチェックしたいと考えています。

あなたは本当に欲しい:

order == undefined   // no quotes -- it's not a string

または、さらに良い:

typeof order == "undefined"

undefined非厳密モードで上書きできるためです。

于 2012-12-14T18:16:25.160 に答える