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値に' price '属性をparseFloatさせ、数量が8に等しい場合は' price2 '属性をparseFloatさせます...そして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))
                        }

しかし、それは機能していません。何か案は?

ありがとう!

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(マットbの回答に関するコメントで指摘されているように、これはその時点で未定義になるという事実を考慮していませんが、最初quantityにオブジェクトの外部で変数を定義するだけitemで、おそらく簡単な修正になります。)

于 2012-05-30T20:36:43.070 に答える