2009-05-28 205 views
0

我在vs 2005上使用asp.net ajax控件工具包1.0。我使用的是collapseablePanel和AlwaysVisibleControlExtender控件。當我使用這些時,我注意到我的面板在隱藏之前閃爍了幾秒鐘。顯示/隱藏div

爲了避免這種情況,我決定把它放在一個div中,使它隱藏起來。 我想在使用控件時顯示它。

以下是我有:

<div id="menuContent" style="display:none"> 

<asp:Panel ID="pnlAddNewContent" runat="server" Width="300px"> 
    ....//the panel stuff here 
</asp> 
</div> 

,並在標題中的JavaScript是這樣的:

function showdiv() { 
    if (document.getElementbyId) { 
     document.getElementbyId('menuContent').style.visibility = 'visible'; 
    } 

    } 

(其對IE 6的我不關心的兼容性)

and body onload = onLoad =「showdiv();」

它正確隱藏負載,但我不能讓它再次顯示。有沒有人有解決方案?

+1

nb改變可見性保留了渲染後的佈局空間,改變了顯示器會改變渲染後的佈局(例如display:none會有效地摺疊該元素) – annakata 2009-05-28 12:03:36

+0

謝謝annakata,這是有用的建議..它爲我解決了它 – waqasahmed 2009-05-28 14:14:50

回答

0

基本上不得不使用可見性隱藏和可見的屬性,因爲這些工作最好的a collapsePanel

6

您試圖通過設置可見性來顯示它,但是您使用顯示屏隱藏了它。

實際上,你想是這樣的:

的document.getElementById( 'menuContent')的style.display = '塊'。

+0

謝謝,我做到了,但使用隱藏和可見使用可視性。 您的人沒有按照我希望它實現的方式在collapsePanel上正常工作。 – waqasahmed 2009-05-28 14:16:50

+0

很高興你把它分類。我建議將顯示樣式覆蓋在可見的位置,因爲顯示會從可見的頁面中移除內容,但仍佔用頁面上的空間,這可能會導致頁面出現大的空白區域,將(或應該)使所有事情都能夠取代它,這是更爲常見的方法。 – 2009-06-01 13:30:24

1

也許這是你在找什麼

JavaScript函數:

function showHide(descriptor) 
{  
    var layer = document.getElementById(descriptor); 
    if (layer != null) { 
     if (layer.style.display != 'none') { 
      layer.style.display = 'none'; //hide layer    
     } else { 
      layer.style.display = 'block';//show layer 
     }  
    } 
} 

HTML:

<a href="javascript:showHide('divInfo');"><img id="imgInfo" src="info.gif" border="0" /></a> 
<div style="display: none;" id="divInfo">some info</div>