1

我试图让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 值解析“价格”属性......如果数量等于 8,则解析“价格2”属性......并解析“价格3 ” ' 如果数量等于 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))
                        }

但它不起作用。有任何想法吗?

谢谢你!

4

3 回答 3

1

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

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

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

var item = {..., price: price, ...}
于 2012-05-30T20:31:15.983 回答
0

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

price: (function(){
  var price;
  ...
  return price;
}())
于 2012-05-30T20:35:36.940 回答
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在对象之外定义一个变量item可能是一个简单的解决方法。)

于 2012-05-30T20:36:43.070 回答