2011-02-13 169 views
1

我有以下代碼:困惑全局變量沒有更新

var clickCount = 1; 
var slideCount = $('div.slide').length; 

$('a#next-button').click(function() { 
    if(clickCount < slideCount) { 
     $('div.slide').animate({"left":"-=" + slideWidth}, 'slow'); 
     clickCount = clickCount + 1; 
    } 
}); 

$('p').text(clickCount); 

它有一個全局變量稱爲clickCount

$('a#next-button').click(function() { …用1的增量更新全局變量,每次點擊<a>元素。

所以,我的問題是,爲什麼:$('p').text(clickCount); 沒有告訴我點擊頁面上更新的clickCount點擊<a>標籤。相反,它只顯示1(原始分配值)。

+1

首先,你可以,如果你想要一個增加使用`的clickCount ++`或`的clickCount + = 2`如果2,依此類推。其次,`slideWidth`沒有定義(第6行)。 – nyuszika7h 2011-02-13 10:24:21

+0

感謝您的回覆。 `SlideWidth`在實際代碼中定義。 – sidewinder 2011-02-13 10:38:40

回答

2

變量正在更新,但您的函數($('p').text(clickCount);)僅運行一次,因此僅使用它所看到的值。

要解決此問題,請將$('p').text(clickCount);放入click函數中。

$('a#next-button').click(function() { 
    if(clickCount < slideCount) { 
    $('div.slide').animate({"left":"-=" + slideWidth}, 'slow'); 
    clickCount = clickCount + 1; 
    $('p').text(clickCount); 
    } 
}); 
2

您需要在每次變量更改時更新段落的文本。該段不會奇蹟般地跟蹤的clickCount變量的值:

$('a#next-button').click(function() { 
    if(clickCount < slideCount) { 
     $('div.slide').animate({"left":"-=" + slideWidth}, 'slow'); 
     clickCount = clickCount + 1; 
     $('p').text(clickCount); 
    } 
});