【发布时间】:2010-09-25 08:17:56
【问题描述】:
我正在尝试将 jQuery (1.4.2) 中 for 循环的每次迭代中的数字增加前一个元素的宽度。
我尝试了以下方法:
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);
}
本节的输出是:
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
我尝试在var leftTotal = leftOffset + leftTotal; 变量赋值中使用parseInt() 左右一个和两个变量,但无济于事。我也尝试过使用 jQuery 的each(),结果完全相同。这并不奇怪,因为我以几乎完全相同的方式分配值......
这里有两个问题:
- 为什么
leftTotal不是数字 (NaN)? - 如何将
leftOffset的新 值添加到上一次迭代的leftOffset值中?
控制台日志应该如下所示:
11
0
97/97
117/214
90/304
115/419
101/520
138/658
93/751
96/847
102/949
80/1029
编辑回应@KennyTM:
Console.log 输出现在(更有希望):
11
0
97 "/" "970"
117 "/" "117970"
90 "/" "90117970"
115 "/" "11590117970"
101 "/" "10111590117970"
138 "/" "13810111590117970"
93 "/" "9313810111590117970"
96 "/" "969313810111590117970"
102 "/" "102969313810111590117970"
80 "/" "80102969313810111590117970"
关于@Tomalak:是的,这是一个错字。可悲的是,这在我的代码和真正的脚本中都是一个错字。 ......叹气......不过,感谢您的收获,这似乎帮了很多忙。
...多么尴尬。 =)
【问题讨论】:
-
你没有分配给
totalLeft是一个错字吗? -
@Tomalak,+1 因为我比我更关注我的 jQuery... =) 从那以后,偷偷摸摸的
parseInt()解决了我的问题,我很乐意接受你的评论一个答案,如果你愿意这样发布? -
嗯。完毕。显然为时已晚。你也接受了一个不可能的答案。
标签: javascript jquery for-loop