【发布时间】:2014-03-19 10:00:15
【问题描述】:
有没有办法改进下面的 if else 语句:
function updateStatusCount(){
var openCount = 0;
var ongoingCount = 0;
var atRiskCount = 0;
var missedCount = 0;
var closedCount = 0;
var onHoldCount = 0;
$('.sr-header-status').each(function(){
var value = $(this).html().toLowerCase();
if(value === "open"){
openCount = openCount + 1;
} else if (value === "ongoing"){
ongoingCount = ongoingCount + 1;
} else if (value === "at risk"){
atRiskCount = atRiskCount + 1;
} else if (value === "missed target"){
missedCount = missedCount + 1;
} else if (value === "closed"){
closedCount = closedCount + 1;
} else if (value === "on hold"){
onHoldCount = onHoldCount + 1;
}
});
$('.statusCount').empty();
$('.open.status_filter').find('span.statusCount').html(openCount);
$('.ongoing.status_filter').find('span.statusCount').html(ongoingCount);
$('.atrisk.status_filter').find('span.statusCount').html(atRiskCount);
$('.missedtarget.status_filter').find('span.statusCount').html(missedCount);
$('.closed.status_filter').find('span.statusCount').html(closedCount);
$('.onhold.status_filter').find('span.statusCount').html(onHoldCount);
}
我在想这样的事情
function updateStatusCount(){
getStatusCount("open");
getStatusCount("ongoing");
getStatusCount("on hold");
getStatusCount("at risk");
getStatusCount("missed target");
getStatusCount("closed");
}
function getStatusCount(status){
var count = 0;
var statusClass = "."+status.replace(/ /g,'');
var $statusContainer = $(statusClass).find('span.statusCount');
$('.sr-header-status').each(function(){
var value = $(this).html().toLowerCase();
if(value === status){
count = count + 1;
}
});
$statusContainer.empty();
$statusContainer.html(count);
}
但哪个更好?
谢谢
【问题讨论】:
-
使用
switch..? -
你能给这段代码一些(简单/有代表性的)上下文吗?它是如何使用的(最好在您的问题中再次发布一些简单的 HTML here,并发布JS Fiddle demo)。
-
@newbie,请检查我的答案,它不使用
each。您的getStatusCount()可以只有一行。顺便说一句,我认为您应该在代码中使用text(),而不是html()
标签: jquery