2011-03-26 77 views
0

我只是製作一個面板,(div)具有cookie,並且可以打開或關閉。 我想雖然動畫的div打開或關閉點擊。向上和向下動畫div

我到目前爲止的代碼是:

var state; 
window.onload=function() { 
    obj=document.getElementById('closeable'); 
    state=(state==null)?'hide':state; 
    obj.className=state; 

    document.getElementById('setup').onclick=function() { 
     obj.className=(obj.className=='show')?'hide':'show'; 
     state=obj.className; 
     setCookie(); 

     return false; 
    } 
} 

function setCookie() { 
    exp=new Date(); 
    plusMonth=exp.getTime()+(31*24*60*60*1000); 
    exp.setTime(plusMonth); 
    document.cookie='State='+state+';expires='+exp.toGMTString(); 
} 

function readCookie() { 
    if(document.cookie) { 
     state=document.cookie.split('State=')[1]; 
    } 
} 
readCookie(); 

任何幫助表示讚賞

回答

2

我不確定,如果我理解你的問題的權利。但是,根據我所理解的,我已經把小提琴放在了一起,以達到你想要的。看一看。

http://jsfiddle.net/mvelaga/de4FE/1

編輯:

更新小提琴解決意見中提到的情況下

http://jsfiddle.net/mvelaga/de4FE/2/

+0

完美馬赫什,我希望你住在布里斯班。我們會立即僱傭你。偉大的工作夥伴,再次感謝(第二次你協助我們)問候 – 422 2011-03-26 01:09:01

+0

jsfiddle再次罷工! – typeof 2011-03-26 01:10:54

+0

很高興幫助:) – 2011-03-26 01:11:22

1

我假設你正在使用jQuery,因爲你已經標記它。

嘗試: //在DOM準備

jQuery(function($) { 
    var panel = $('#closable'); 
    var state = 'hide'; 

    $('#setup').click(function(e) { 
     e.preventDefault(); 
     if(state == 'hide') { 
      // you can use the animate() or 
      // fadeIn()/fadeOut methods, too 
      // depending on desired effect 
      panel.slideDown(); 
      $(this).text('Hide'); 
      state = 'show'; 
     } else 
      panel.slideUp(); 
      $(this).text('Show'); 
      state = 'hide'; 
     } 
     setCookie(); 
    }) 
    function setCookie() { 
     ... 
    } 
    function readCookie() { 
     ... 
    } 
}); 
+0

感謝typeof :) – 422 2011-03-26 01:17:55

+0

嗯,它看起來很經濟代碼哈哈。但如何在html>中初始化它?並設置Cookie狀態? – 422 2011-03-26 01:26:32

+0

文檔加載並將點擊處理程序附加到您的顯示/隱藏鏈接。你的cookie功能應該仍然有效,所以我沒有包含它們。將編輯以向您顯示您應該放置的位置。 – typeof 2011-03-26 01:30:02