jQuery sum of input values in sections
You are doing "1"+"1" and expect it to be 2 ( int)
it is not.
a very quick (and not fully correct) solution is :
$('.section').each(function(){
var totalPoints = 0;
$(this).find('input').each(function(){
totalPoints += parseInt($(this).val()); //<==== a catch in here !! read below
});
alert(totalPoints);
});
catch ? why ?
answer: You should always use radix cause if you dont , a leading zero is octal !
parseInt("010") //8 ( ff)
parseInt("010") //10 ( chrome)
parseInt("010",10) //10 ( ff)
parseInt("010",10) //10 ( chrome)
well.... you get the idea. supply radix !
edit
final solution (using .each( function(index, Element) )
)
$('.section').each(function(){
var totalPoints = 0;
$(this).find('input').each(function(i,n){
totalPoints += parseInt($(n).val(),10);
});
alert(totalPoints);
});
Use parseFloat() or parseInt()
var totalPoints = 0;
$('.section input').each(function(){
totalPoints = parseFloat($(this).val()) + totalPoints;
});
alert(totalPoints);
The value is stored as a string, so calling +=
is doing string concatenation. You want/need to treat it as a number, so it does addition. Use the parseInt()
function to convert it to a number:
totalPoints += parseInt($(this).val(), 10);