0

各ページの高さを配列にプッシュする必要があります。ただし、/私の問題は、値自体ではなく、値の現在の合計をプッシュする必要があることです。

これまでに行ったことは次のとおりです。

var heights = [0];
$('.page').each(function(i) {
    heights.push($(this).height());
});

結果は次のようになります:[0, 2000, 1000, 3000, 1500]ページの高さですが、次のようなものが必要です: [0, 2000, 3000, 6000, 7500]、これは追加されたページの高さの現在の合計です。

4

3 に答える 3

3
var heights = [0];
$('.page').each(function(i) {
    heights.push(
        $(this).height() + (heights[i] || 0)
    );
});

EDIT編集版には、質問者の要求に応じて先頭の配列メンバーが
組み込まれています。0

于 2012-12-28T22:43:17.037 に答える
2

あなたが持っているコードの後に​​これを追加してください:

var total = 0;
for (i=1 ; i < heights.length ; ++i) {
    total += heights[i];
    heights[i] = total;
}
于 2012-12-28T22:39:04.310 に答える
2

あなたは単一のループでそれを行うことができます:

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);
  };
}()));

total2 番目のバージョンでは、変数によるスコープの汚染が回避されます。

于 2012-12-28T22:41:35.560 に答える