当number到达嵌套循环内的每个第n个值时

时间:2015-10-25 21:43:38

标签: javascript jquery frontend

目的:用户可以选择产品类型和该产品类型的变体。我需要跟踪添加的每个产品类型以及添加了多少变体。例如,
第1项:衬衫>长袖(1)
第2项:衬衫> V领(3)
第3项:裤子>牛仔裤(1)

总金额与产品的变化有关。每当用户选择相同类型的第四个变体时,我想要发生一些事情。对于这个例子,我想要产品类型衬衫发生一些事情,因为目前长袖+ v领= 4

我有两个嵌套循环。第一个是循环遍历每个产品类型,内循环应循环遍历每个变体并获得总和。

这是一个很好的起点,但我似乎无法通过for循环来检查变量总数的每个第n个值。

jQuery('.product').each(function(i, objP){
    var sum = 0,
    min = 4,
    max = 5;        
    jQuery(objP).find('.product-variation-quantity').each(function(ii, objC){
        sum += parseInt(jQuery(objC).text());
        return sum;
        for ( var x = 0; x < min * max; x += min) {
            if ( sum == x ) {
                var sum_id = jQuery(objP).attr('id');
                console.log(sum_id);
                //product quantity has reached min to pass
            }
            else {
                //has not reached min
            }
        }
    });
});

有任何帮助吗? 注意:objP和objC用于跟踪上下文this
注意2:澄清:每4,8,12等值,会发生一些事情,而不是每隔4,5,6,

2 个答案:

答案 0 :(得分:0)

这个怎么样:如果选择了8个相同变体的项目,控制台将会读取

[id] has crossed 2x4 items

代码:

jQuery('.product').each(function(i, objP){
    var min = 4,
        max = 5,
        sum_id;        
    jQuery(objP).find('.product-variation-quantity').each(function(ii, objC){
        var count = parseInt(jQuery(objC).text());
        if ( count < min ) {
            //product quantity has not reached min
        }
        else {
            // product quantity has reached min to pass
            sum_id = jQuery(objP).attr('id');
            console.log(sum_id + ' has crossed ' + min + 'x' 
                    + Math.floor(count/min) + ' items');
        }
    });
});

答案 1 :(得分:0)

首先,您的代码中存在错误,它是嵌套循环中return sum;的位置。此后的for循环将永远不会执行。

我建议使用此代码:

jQuery('.product').each(function(i, objP){
    var sum = 0,
    min = 4,
    max = 5;   
    var ind = 1; 
    jQuery(objP).find('.product-variation-quantity').each(function(ii, objC){
        sum = parseInt(jQuery(objC).text());
        if (sum > 0 && sum % 4 == 0) {
            // Do something
        }

    });
});

Here's codepen sample.