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>

如您所知,我正在记录一些调试文本以说明发生了什么。第一次单击链接时,我总是在日志中返回这两行: 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 回答