嘿伙计我有6个复选框,并使用他们的“rel =”值来累加并显示总和。但是,如果我复选框1和3以及6,则添加会忽略框3,并且不会将其添加到总和中。所以基本上检查的最低和最高的checbox都是加起来而不是所有被检查的。
想知道是否有人能找到原因。
$(document).ready(function() {
function recalculate() {
var sum = 0;
var base = 0;
var d=new Date();
var theDay=d.getDay();
switch (theDay)
{
case 6:
base = 30;
break;
case 0:
base = 30;
break;
default:
base = 49 ;
}
$("input[type=checkbox]:checked").each(function() {
sum = parseInt($(this).attr("rel")) + base;
});
$("#output").html(sum);
}
$("input[type=checkbox]").change(function() {
recalculate();
});
});
答案 0 :(得分:2)
每次在sum
循环中,您都会覆盖each()
的值。这就是你能做的:
sum = base;
$("input[type=checkbox]:checked").each(function() {
sum += parseInt($(this).attr("rel"));
});
答案 1 :(得分:1)
猜测一下,你需要改变这一行:
$("input[type=checkbox]:checked").each(function() {
sum = parseInt($(this).attr("rel")) + base;
});
对此:
$("input[type=checkbox]:checked").each(function() {
sum += parseInt($(this).attr("rel")) + base;
});
使用当前代码,实际上并未计算总和,因为每次获得下一个复选框的rel=
值时,您将覆盖之前的总和值。
编辑:如果您不想每次添加基础,只需将该分配移出循环即可。像这样:
sum = base;
$("input[type=checkbox]:checked").each(function() {
sum += parseInt($(this).attr("rel"));
});
答案 2 :(得分:0)
尝试
$("input[type=checkbox]").click(function() {
recalculate();
});
rel属性用于锚标记
而不是rel属性使用值或id
答案 3 :(得分:0)
您正在重置以下代码中每个复选框的总和:
$("input[type=checkbox]:checked").each(function() {
sum = parseInt($(this).attr("rel")) + base;
});