修改一个简单的jQuery乘数

时间:2016-10-06 18:08:40

标签: jquery

我有一个函数,它将提供的值相乘并将结果输出到屏幕。它工作得很好,但如果值高于设定值,我试图对数字进行乘法运算。

例如,如果大于10 + 20%,如果大于20 + 40%。

这是我到目前为止所拥有的。

                jQuery(function($){
                    var price = <?php echo $product->get_price(); ?>,
                        currency = '<?php echo get_woocommerce_currency_symbol(); ?>';
                    $('[name=quantity]').change(function(){
                        if (!(this.value < 1)) {
                            var product_total = parseFloat(price * this.value);
                            $('#product_total_price .price').html( currency + product_total.toFixed(2));
                        }
                    });
                });

我试过这样做,如果是if else声明,但它没有工作,我不知道为什么。

                jQuery(function($){
                    var price = <?php echo $product->get_price(); ?>,
                        currency = '<?php echo get_woocommerce_currency_symbol(); ?>';
                    $('[name=quantity]').change(function(){
                        if (!(this.value < 1)) {
                            var product_total = parseFloat(price * this.value);
                            $('#product_total_price .price').html( currency + product_total.toFixed(2));
                        } else if (!(this.value < 10)) {
                            var newPrice = price * 1.2; 
                            var product_total = parseFloat(newPrice * this.value);
                            $('#product_total_price .price').html( currency + product_total.toFixed(2));
                        } else {
                            // do nothing
                        }
                    });
                });

非常感谢您的反馈。

2 个答案:

答案 0 :(得分:0)

这是一个非常简单的if / else if / else条件:

var amounts = [1,5,12,37,50];
var price = 100;
$.each(amounts, function(idx, element) {
    if (element < 10) {
        console.log('Amount is: ' + element + ' price is normal: ' + price);
    } else if (element <=20 ) {
        console.log('Amount is: ' + element + ' price has 10% discount: ' + (price - (price * 0.1)));
    } else if (element <= 40) {
        console.log('Amount is: ' + element + ' price has 20% discount: ' + (price - (price * 0.2)));
    } else {
        console.log('Amount is: ' + element + ' price has 45% discount: ' + (price - (price * 0.45)));
    }
});

输出:

Amount is: 1 price is normal: 100  
Amount is: 5 price is normal: 100  
Amount is: 12 price has 10% discount: 90  
Amount is: 37 price has 20% discount: 80  
Amount is: 50 price has 45% discount: 55

我建议你在使用jQuery后不要混用vanila js和jquery。如果您使用的是$(this).val()而不是this.value,则语法正确,但更具可读性。

答案 1 :(得分:0)

* { flex-shrink: 0; min-width: 0; min-height: 0; } 语句中的逻辑没有意义。如果该值大于或等于1,它将始终进入第一个块,并且永远不会到达if块。我建议以相反的顺序组织if / if-else-else,并使用“大于/等于”而不是“不小于”逻辑。所以使用你的例子:

else if

这种逻辑是正确的,更不用说更容易阅读了。