Unlike in other languages which either throw an error or just assume 0 when a string cannot be converted to an integer, parseInt() returns "NaN" which means "Not-a-Number". This is incredibly irritating when you have a nested loop for instance doing parseInt() and incrementing to a integer, because incrementing NaN makes the value of the variable "NaN".
There is a function that can check for NaN called isNaN() but I have another approach which is cleaner and simpler to use throughout your code.
var myStr = "NotaNumber"; var myNum = 3; myNum += parseInt(myStr) || 0;
The key is the "|| 0", basically, if parseInt() does not return a number the || operator is invoked which then returns 0 instead. Very clean and only 3 more characters than normal.
Now you will just have to figure out why the returned values are 0 and not what you expected