2012-02-12 11 views
0

私はdrag'n'dropを使ってカートに追加できるオブジェクトの番号をつけようとしています。したがって、このスニペットは、span.amountValで書かれた現在の番号をチェックし、この番号に '+ 1'を簡単に追加する必要がありますが、結果は常に '1'です。私が'alert(i ++);のコメントを外すと、スニペットは私のように動作します。私は混乱しています、これについては何ですか?jQueryのオブジェクトに番号を付けることを試みる

$.favList.find("div[data-asset-id="+ _itemID +"]").each(function() { 
    var i = $(this).find("span.amountVal").text(); 

    // alert(i++); 

    $(this).find("span.amountVal").text(i++); 
}); 

ありがとうございます。

答えて

2

i++最初インクリメントそれ次いで、iの値を返しalert(i++)を配置すると、変数はすでに一度インクリメントされます。

変数の前に++を入れて:

$(this).find("span.amountVal").text(++i); 

それとも単にあなたが変数権利を破棄しているので、後に1を追加します。あなたはpre-increment/post-increment問題がある

$(this).find("span.amountVal").text(i + 1); 
+0

「++ i」ものしました、ありがとうございます。我々は決して学ばない:) – Thomas

2

を、次の変更がそれを解決する必要があります:

$.favList.find("div[data-asset-id="+ _itemID +"]").each(function() { 
    var i = $(this).find("span.amountVal").text(); 

    $(this).find("span.amountVal").text(++i); 
}); 

Pre-Incrementは、それが返された後iに1を加算iPost-Incrementながら1その後、iへとリターンを追加します。以下は

話題に触れStackOverflowの上で同様のポストです:

post increment vs pre increment - Javascript Optimization

0

あなたたちは何をしているのか?それはスパンの価値を読んではいけません。悪い習慣です。代わりに、アイテムの長さ(オブジェクト内など)を読み取り、表示する必要があります。

関連する問題