2012-07-05 52 views
0

我必須使一個p元素消失點擊一個按鈕,而div元素滑過它。如果p元素已隱藏,並且div已經覆蓋它,則單擊該按鈕時p應該變回可見狀態,但在1秒後div會滑落。錯誤與CSS可見性屬性和JavaScript setTimeout方法

第一部分工作正常,但在第二種情況下,不能在p的visibility屬性上使用setTimeout函數。

下面的代碼:

function slide_wiki(){ 
    var wiki=document.getElementById('wiki_bar'); 
    var p_vita=document.getElementById('vita'); 
    var width=wiki.style.width; 
    slide(wiki, 100); 
    if(width!='0%'){ 
     setTimeout(function(){p_vita.style.visibility='visible'}, 1000); 
     wiki.style.borderRight='1px solid #E0E0E0'; 
    }else{ 
     p_vita.style.visibility='hidden'; 
     setTimeout(function(){ 
      wiki.style.borderRight='0px solid white'; 
     }, 900); 
    } 
} 

我創建了一個的jsfiddle的建議,但由於某些原因的滑動功能並不在所有的工作,仍然需要CSS和JavaScript是存在的,所以應該反正幫助。 http://jsfiddle.net/bigcola317/GRs3V/5/

+0

你有一個jsfiddle?你有沒有嘗試CSS'display'屬性? – starbeamrainbowlabs 2012-07-05 17:40:28

+0

我會嘗試它,但它會毀了我的設計,所以我希望有更好的解決方案。 – BigCola 2012-07-05 17:44:27

+0

如果您提供小提琴,我們可以努力獲得正確的代碼,然後您可以將它放回到您的設計中。 – starbeamrainbowlabs 2012-07-05 17:54:03

回答

1

由於我看不到您的代碼,我無法跟蹤該錯誤。所以,相反,我使用簡單的css過渡製作了一個工作解決方案。看看它是否適合你:http://jsfiddle.net/joplomacedo/V3yat/

+0

創建小提琴http://jsfiddle.net/bigcola317/GRs3V/5/ – BigCola 2012-07-06 09:03:39

0

解決它。問題是,如果「p」不可見,那麼我點擊按鈕後,slide()會在「div」上執行slide_close()函數,在「p」上爲style屬性設置新值。我猜想問題可能是,如此我試圖在slide_close(改變樣式屬性可能會覆蓋上visibility屬性進行的設置)與功能setAttribute()方法:

p_vita.style.width="..."; 
p_vita.style.marginLeft="..."; 

,並且使工作。這不是很清楚,但無論如何感謝:)