簡體   English   中英

為什么這個.push()無法正常工作?

[英]Why is this .push() not working as expected?

var rangesliderfilter = function () {
    var low = parseInt(jQuery('#min-value-span').text());
    var high = parseInt(jQuery('#max-value-span').text());
    var BreakfastDR = [];
    var LunchDR = [];
    var DinnerDR = [];
    var SnacksDR = [];
    while (low <= high) {
        BreakfastDR.push('.' + low++ +'.breakfast');
        LunchDR.push('.' + low++ +'.lunch');
        DinnerDR.push('.' + low++ +'.dinner');
        SnacksDR.push('.' + low++ +'.snacks');
        }

    jQuery('.rangecheck').attr('value', BreakfastDR);
}

這將以4為間隔添加值。因此,如果low為0且high為16,則添加的字符串為: .0.breakfast,.4.breakfast,.8.breakfast,.12.breakfast

它應該以這種方式處理每個數字,而不僅僅是以4為間隔.0.breakfast,.1.breakfast,.2.breakfast,etc

有人看到一個明顯的原因嗎? 我不應該在同一個while function放入不同的var嗎?

原因是您在循環中low四次遞增。 最后只增加一次:

while (low <= high) {
    BreakfastDR.push('.' + low +'.breakfast');
    LunchDR.push('.' + low +'.lunch');
    DinnerDR.push('.' + low +'.dinner');
    SnacksDR.push('.' + low +'.snacks');
    low++;
}

這是因為您在每次進餐類型之后都使用以下代碼將low遞增四次

BreakfastDR.push('.' + low++ +'.breakfast');  // Use 0, set to 1.
LunchDR.push('.' + low++ +'.lunch');          // Use 1, set to 2.
DinnerDR.push('.' + low++ +'.dinner');        // Use 2, set to 3.
SnacksDR.push('.' + low++ +'.snacks');        // Use 3, set to 4.

因此早餐將變為0 ,午餐將變為1 ,依此類推。 最初的早餐后的下一個早餐將得到4 您最終將得到:

breakfast   0,  4,  8, 12, 16, ...
lunch       1,  5,  9, 13, 17, ...
dinner      2,  6, 10, 14, 18, ...
snacks      3,  9, 11, 15, 19, ...

假設您希望每種進餐類型的順序為0, 1, 2, ... ,則應使用類似以下內容的方法:

BreakfastDR.push('.' + low +'.breakfast');
LunchDR.push('.' + low +'.lunch');
DinnerDR.push('.' + low +'.dinner');
SnacksDR.push('.' + low++ +'.snacks');

或者,如果您想在零食之后添加餐點:

BreakfastDR.push('.' + low +'.breakfast');
LunchDR.push('.' + low +'.lunch');
DinnerDR.push('.' + low +'.dinner');
SnacksDR.push('.' + low +'.snacks');
low++;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM