I'm trying to increase a number on each iteration of a for
loop, in jQuery (1.4.2), by the width of the previous element.
I've tried the following:
var
$lis = $('#bookmarks > li'),
liHeight = parseInt($lis.height()),
numLis = $lis.length;
console.log(numLis);
var totalLeft = '0';
console.log(totalLeft);
for (i=1; i<numLis; i++) {
var leftOffset = $lis.eq(i-1).width();
var leftTotal = leftOffset + leftTotal;
console.log(leftOffset +"/"+ leftTotal);
}
The output from this section is:
11 (the length of the array)
0 (the initial value of 'totalLeft')
97/97
117/214
90/
115/NaN
101/NaN
138/NaN
93/NaN
96/NaN
102/NaN
80/NaN
I've tried using parseInt()
around one, and both, variables in the var leftTotal = leftOffset + leftTotal;
variable assignment, to no avail. I've also tried using jQuery's each()
, with the exact same result. Which is unsurprising, since I assigned the values in almost exactly the same way...
There are two questions here:
- Why is
leftTotal
not-a-number (NaN
)? - How can I add the new value of
leftOffset
to the previous-iteration's value ofleftOffset
?
The console log should read something like:
11
0
97/97
117/214
90/304
115/419
101/520
138/658
93/751
96/847
102/949
80/1029
Edited in response to @KennyTM:
Console.log output is now (more promising):
11
0
97 "/" "970"
117 "/" "117970"
90 "/" "90117970"
115 "/" "11590117970"
101 "/" "10111590117970"
138 "/" "13810111590117970"
93 "/" "9313810111590117970"
96 "/" "969313810111590117970"
102 "/" "102969313810111590117970"
80 "/" "80102969313810111590117970"
With regards to @Tomalak: yeah, it was a typo. Sadly it was a typo in both my code here and in the real darn script. ...sigh... Thanks for the catch, though, that seems to have done a lot to help out.
...how embarrassing. =)