2014-03-27 212 views
0

我正在爲我正在構建的網頁開發一個簡單的打開/關閉動畫DIV。它應該是簡單的,但有些東西給我一個掛斷。我的繼承人JS代碼:Javascript動畫打開/關閉菜單

<script> 
slideOpen = 1; 
alert(slideOpen); 

function openClose(){ 

if (slideOpen = 1){ 
    closeTab(); 
    slideOpen = 0; 
}; 
if (slideOpen = 0){ 
    openTab(); 
    slideOpen = 1; 
}; 
function closeTab(){ 
    $("#upcomingEvents").animate({top:"-910px"}); 
} 

function openTab(){ 
    $("#upcomingEvents").animate({top:"-300px"}); 
} 
alert(slideOpen); 
} 
</script> 

而這裏的運行功能的HTML:

<a href="javascript:openClose();" style="position: absolute; bottom: 32px; right: 32px;" >Open/Close Tab</a> 

那麼,這背後的想法是,只要用戶點擊錨,它運行openClose()函數。在初始頁面加載時,slideOpen = 1,如果用戶點擊錨點,如果slideOpen = 1,則運行closeTab()動畫函數,然後設置slideOpen = 0。如果slideOpen = 0,則應運行openTab()動畫函數,設置slideOpen = 1。

基本上: 如果tab打開slideOpen = 1;如果選項卡關閉,則爲 slideOpen = 0;

但是,我也在這個函數中設置了兩個警報;一個是頁面加載時的初始值,另一個是每次調用openClose()函數時都會運行的值。

在初始頁面加載時,slideOpen警報顯示爲「1」。單擊錨點關閉選項卡後,openClose()函數中的slideOpen警報顯示「0」,並且選項卡成功關閉。再次單擊錨點時,警報再次顯示「0」,並且該選項卡不會重新打開。它應該顯示slideOpen =「1」,但由於某種原因,它不是。這就是我的問題。

在此先感謝。

+0

喂 - 你試過https://api.jquery.com/slideToggle/?它會自動跟蹤你的可見狀態,所以你不必這樣做。 –

+0

我可以稍後補充說明,謝謝你給我看。但是,這個問題總的來說就是我自己的切換不起作用。 – wUmpage

回答

0
if (slideOpen = 1){ 

在這裏,您將1分配給變量slideOpen,因此條件將始終評估爲true。

使用==,而不是=這兩種情況

if (slideOpen == 1){ 
+0

謝謝,這是正確的,但這只是我的問題的一半。現在,當您點擊錨點時,選項卡動畫關閉,然後立即再次打開。我沒有改變任何東西,除了「=」到「==」。 – wUmpage

+0

@ user2217822它似乎工作正常.. http://jsfiddle.net/tilwinjoy/S24Pz/10/ –

+0

@ user2217822你對'(slideOpen == 0)'做了同樣的事嗎? – easwee