这可能是一个菜鸟问题,但我是coffeescript和javascript的新手,我试图弄清楚如何重构下面的代码来获取两个具有不同类名的列的值的总和并显示在我的html页面是我到目前为止的代码:
totalItems = ->
column= $("#websiteTable td[class=website_count]")
theTotal = 0
column.each ->
value = $(this).html()
theTotal += parseInt(value)
return
alert(theTotal)
newItems = ->
column= $("#websiteTable td[class=new_count]")
theTotal = 0
column.each ->
value = $(this).html()
theTotal += parseInt(value)
return
alert(theTotal)

你可以看到有很多重复的代码我怎么能有效地重写它?
由于
答案 0 :(得分:3)
创建一个以jQuery选择器作为参数的函数。
calculateTotal = (element, total = 0) ->
element.each ->
value = $(@).html()
total += +value
total
然后你可以这样做:
totalItems = calculateTotal $ "#websiteTable td[class=website_count]"
newItems = calculateTotal $ "#websiteTable td[class=new_count]"
请参阅下面的实例。
var calculateTotal;
calculateTotal = function(element, total) {
if (total == null) {
total = 0;
}
element.each(function() {
var value;
value = $(this).html();
return total += +value;
});
return total;
};
$('button').on('click', function(){
alert(calculateTotal($('ul li')));
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li>2</li>
<li>4</li>
</ul>
<button>Calculate the total</button>
&#13;