带有IF语句的parseFloat

时间:2012-05-30 20:28:44

标签: javascript jquery

我正在尝试在变量中使用 IF 语句...

当我以价格开始时,查看 // paypal变量下的文字:if(item.quantity =“4”)

 product.find('.product-buy').click(function(e) {
                    //check if option is set
                    var option = $(this).attr('option') || '';
                    var item = {
                        group: product.parent().attr('id'),
                        id: product.attr('id'),
                        option: option || 'NA',
        LOOK HERE---->>>   quantity: parseInt(product.attr('minimum'+option),10) || 1,
                        minimum: parseInt(product.attr('minimum'+option),10) || 1,
                        //TEST
                         gap: parseFloat(product.attr('gap'+option)),
                        //TEST

                        //paypal variables
                        name: product.attr('name'+option),

    AND HERE---->>>   price: if(item.quantity="4")
                        {
                            parseFloat(product.attr('price'+option))
                            }
                            if(item.quantity="8")
                        {
                            parseFloat(product.attr('price2'+option))
                            }
                            if(item.quantity="12")
                        {
                            parseFloat(product.attr('price3'+option))
                            }

                        shipping: product.attr('shipping'+option),
                        number: product.attr('number'+option),
                        handling: product.attr('handling'+option)
                    };
                    addToCart(item,true);
                    e.preventDefault();
                }).fadeTo(0, 0.7).hover(hoverHandler(300, 1), hoverHandler(300, settings.buttonsOpacity));
              //set currency sign 
              if (settings.currencySign) {
                product.find('.product-currency').html(settings.currencySign);
              }
        });

所以基本上,如果数量属性等于4,我希望item.price值为parseFloat' price '属性... to parseFloat'< strong> price2 '属性,如果数量等于8 ...而parseFloat' price3 '属性,如果数量等于12。

正如你所看到的,现在我试过了:

                    price: if(item.quantity="4")
                    {
                        parseFloat(product.attr('price'+option))
                        }
                        if(item.quantity="8")
                    {
                        parseFloat(product.attr('price2'+option))
                        }
                        if(item.quantity="12")
                    {
                        parseFloat(product.attr('price3'+option))
                        }

但它不起作用。有什么想法吗?

谢谢你!

3 个答案:

答案 0 :(得分:1)

你不能在Javascript中的if这样的表达式中嵌入if语句。该语言不允许。

将值分配给变量,然后将要创建的对象的price属性分配给该变量。

var price = 0;
if(item.quantity==="4") {
    price = parseFloat(product.attr('price'+option))
}
else if ... {
} 
...

var item = {..., price: price, ...}

答案 1 :(得分:0)

通过查看其他评论,这是正确的,但您也可以将所有内容放在一个自动执行的匿名函数中,该函数返回价格值:

price: (function(){
  var price;
  ...
  return price;
}())

答案 2 :(得分:0)

查看三元运算符。

price: item.quantity == "4" ? parseFloat(product.attr('price'+option)) : (
    item.quantity == "8" ? parseFloat(product.attr('price2'+option)) : (
        item.quantity == "12" ? parseFloat(product.attr('price3'+option))
    )
),

(虽然这并没有考虑到item.quantity在这一点上未定义的事实,正如关于matt b答案的评论中所指出的那样。只需在{{{}之外定义一个quantity变量1}}对象起初可能是一个简单的修复。)