2012-02-12 81 views
0

我试图编号对象,可以通过拖放添加到购物车。所以,这段代码应该检查当前编号为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); 

或者简单地添加一个到它,因为你抛弃后的变量权:

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

'++ i'事情做到了,谢谢。我们永远不会知道:) – Thomas 2012-02-12 17:01:49

2

你有pre-increment/post-increment问题,下面的变化应该解决这个问题:

$.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然后回报iPost-Increment已返回后,加1 i

下面是一个类似的帖子StackOverflow上触及的话题:

post increment vs pre increment - Javascript Optimization

0

你们在做什么?它不应该读取SPAN的值,这是不好的做法。相反,它应该读取项目的长度(例如,在一个对象内)然后显示它。