I am using jQuery to pull some data from a web page, it comes back as an array with the following values (.5, .25, 1.25, 3.75) which I am trying to add. Here's my code snippet:
var th = 0;
for (thisrow in objGrid) {
var hours = objGrid[thisrow]['hours'];
th = th+parseFloat(hours);
console.log(hours);
$("#msgbox").html("Showing records for week: " + thisDate + ". Total Hours for the week : " + th);
}
in console.log I am getting this for the hours - 0, 0 , 1, 3 and it is totaling 4. If I don't use parseFloat I still get the same results, (thought I would get NaN). What am I doing wrong?
I think you must have some other problem, as what you are describing should work. For example (here's a bad-but-direct translation of your code):
A few things you should change about your code anyhow:
Don't use
for ( x in a )
to iterate over an array; use a numeric for loop:for (var i=0,len=a.length;i<len;++i)
Always
var
your variables. You're using and overwriting a globalthisrow
variable. Even when you usefor ... in
, do it like sofor (var x in o)
(unless you have declared your variable earlier in the function).You should use
th += ...
instead ofth = th + ...
, just because it's shorter and DRYer.You should use
*1
instead ofparseFloat
. It's faster, less typing, and doesn't lie to you when you have a janky string.