2010-11-01 66 views
41

我有了下面一個非常簡單的外部CSS樣式表:Div設置爲顯示:無在CSS類 - 爲什麼我不能重寫它,並顯示在身體的股利?

div.hideBox { 
display:none; 
} 

所以當HTML頁面加載,與類屬性「hideBox」不會在頁面上顯示的div這就是我要的。但是當用戶點擊同一頁面上的按鈕時,我會顯示/顯示該框。我試圖使用onclick事件來做到這一點,但div不會顯示。

因此,例如,該代碼將是:

<script language="javascript"> 
function showmydiv() { 
document.getElementById('mybox').style.display = ""; 
} 

</script> 
</head> 
<body> 
<div id="mybox" class="hideBox"> 
some output of text 
</div> 
<input type="button" name="ShowBox" value="Show Box" onclick="showmydiv()"> 

什麼奇怪的是,當我使用visibility:hidden; position:absolute;,我可以使用JavaScript函數來顯示<div>類似這樣的設置工作。

我在這裏做錯了什麼?

+0

這是否發生在所有瀏覽器? – dotariel 2010-11-01 16:07:25

+0

是的,我在IE,Firefox和Chrome上測試過。 – katura 2010-11-01 16:08:11

回答

66

因爲divdisplay風格屬性設置爲""不會更改CSS規則本身什麼。這基本上只是創建一個「空的」內聯 CSS規則,除了清除該元素上的相同屬性之外,它沒有任何作用。

你需要將其設置的東西,值:

document.getElementById('mybox').style.display = "block"; 

你在做什麼工作,如果你是在DIV更換內嵌風格,就像這樣:

<div id="myBox" style="display: none;"></div> 

document.getElementById('mybox').style.display = ""; 
+0

謝謝,那是我需要的答案......並且我也讚賞這個解釋:) – katura 2010-11-01 16:11:45

+0

@katura:不客氣。 – 2010-11-01 16:12:39

+2

@katura:如果答案滿足您的問題,請將其標記爲已選(即已接受),以便SO社區更傾向於回答您未來的問題。 – Robusto 2010-11-01 16:14:24

11
document.getElementById('mybox').style.display = "block"; 
6

嘗試設置顯示器以阻止您的javascript而不是空白值。

2

我可以看到,你想寫你自己的短的JavaScript爲此,但你有沒有考慮使用Frameworks的HTML操作? jQuery是我最喜歡的工具,儘管它對於你當前的問題來說是一種矯枉過正,因爲它有很多額外的功能。

Have a look at jQuery here