所以我有这个javascript函数,reOrderJSON,它命令一个数组,如果参数order
等于“反向”,它会在排序后立即反转数组。
我还有一个绑定到关联链接的click事件的函数。
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
是一个数组对象,如果这有任何区别的话。
答案 0 :(得分:3)
您的比较
order === "undefined"
目前正在检查字符串“undefined
”,但您实际上想要检查变量中的未定义值。
你真的想要:
order == undefined // no quotes -- it's not a string
或者,甚至更好:
typeof order == "undefined"
因为undefined
可以在非严格模式下覆盖。