你好,这里的人是我的代码......
var total = 0;
var find_total;
function total_val(find_total){
$(find_total).each(function() {
total += parseInt($(this).text());
return total;
});
}
我叫这个函数......
$('#total_price').val(total_val('.price'));
#total_price
和.price
不断变化为different div ids and class
... return total;
不起作用,有什么方法可以解决这个问题吗?
答案 0 :(得分:1)
您正在返回.each()
函数内的总值,当我们期望函数total_val()
中的值时,它不会返回任何内容,
尝试,
function total_val(find_total){
var total = 0; //remove the global variable total and use this.
$(find_total).each(function() {
total += parseInt($(this).text());
});
return total;
}
或者您可以使用.reduce()
简化代码。
function total_val(find_total){
return $(find_total).map(function() {
return parseInt($(this).text());
}).get().reduce(function(a,b){
return a+b;
});
}
更简单,
function total_val(find_total){
return $(find_total).get().reduce(function(a,b){
return a+ parseInt($(b).text(),10);
},0);
}
答案 1 :(得分:0)
Here's a fiddle showing you a couple ways you can do this
这可以很好地为你工作
function total(jq, callback) {
return jq.get().reduce(function (sum, elem) {
return sum + window.parseInt(callback(elem), 10);
}, 0);
}
然后像这样使用它
total($(".price"), function(elem) {
return $(elem).text();
});
我认为这种方法更好,因为它可以为您提供total
的元素类型的灵活性。
例如,如果您尝试总计<input>
个元素,则需要使用
total($("input"), function(elem) {
return $(elem).val();
});
更好的是,将它变成像这样的轻量级jQuery插件
(function(window, $) {
function total(jq, callback) {
// code from above
}
$.fn.total = function(callback) {
return total(this, callback);
};
})(window, jQuery);
现在你可以像这样使用它了
$(".price").total(function(elem) {
return $(elem).text();
});