我需要将每个页面的高度推入一个数组。然而/我的问题是,我需要推的不是值本身,而是值的运行总数。
到目前为止我所做的是:
var heights = [0];
$('.page').each(function(i) {
heights.push($(this).height());
});
结果看起来像这样:[0, 2000, 1000, 3000, 1500]
,这是页面的高度,但是我需要这样的东西:[0, 2000, 3000, 6000, 7500]
,这是添加的页面高度的运行总数。
var heights = [0];
$('.page').each(function(i) {
heights.push(
$(this).height() + (heights[i] || 0)
);
});
编辑
编辑版现在根据提问者的要求合并了领先的0
数组成员。
你可以在一个循环中完成:
var heights = [];
var total = 0;
$('.page').each(function(i) {
total += $(this).height();
heights.push(total);
});
还是……如果你想让它超级干净:
var heights = [];
var total = 0;
$('.page').each((function(){
var total = 0;
return function(i) {
total += $(this).height();
heights.push(total);
};
}()));
第二个版本避免使用total
变量污染任何作用域。
将此代码添加到您的代码之后:
var total = 0;
for (i=1 ; i < heights.length ; ++i) {
total += heights[i];
heights[i] = total;
}