2011-10-24 46 views
1

我希望我的導航欄(即列表形式)在頁面加載時保持不可見(display:none;),並在單擊某物時顯示(當前正在使用按鈕)用JavaScript更改CSS類沒有任何效果

這裏是我的HTML代碼:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 

<head> 
<script type="text/javascript" src="js/navbar.js"></script> 
<link rel="stylesheet" type="text/css" href="main.css"> 
<script type=text/javascript> 
function changeClass(){ 
document.getElementById("mainnav").setAttribute("class", "show"); 
} 
</script> 
</head> 

<body> 

<div class="wrapper"> 

<input type="button" value="click" onClick="changeClass()"> 

<div id="mainnav"> 

<ul > 
<li>Home</li> 
<li>Emergency Repair Service</li> 
<li>Heating</li> 
<li>Air Conditioning</li> 
<li>Products</li> 
<li>Specials</li> 
<li>Contact</li> 
</ul> 

</div><!--mainnav--> 

這裏是我的CSS

#mainnav { 
display:none; 
} 

ul li { 
float: left; 
list-style-type: none; 
} 

.show { 
display: block; 
height: 75px; 
width: 100%; 
background-color: #000; 
} 

下面是我的javascript

function changeClass(){ 
document.getElementById("mainnav").setAttribute("class", "show"); 
} 

謝謝!

回答

2

我認爲js很好,但問題出在css上,請嘗試像下面那樣更改它。

.show { 
display: block !important; 
height: 75px; 
width: 100%; 
background-color: #000; 
} 
2

它的工作原理。看到我的例子在這裏:http://jsbin.com/uyonuc

你確定你最初設置它隱藏的CSS嗎?

另請嘗試添加!importantdisplay:block以確保它覆蓋任何其他屬性。

0

更改此:

.show { 
    display: block; 
    height: 75px; 
    width: 100%; 
    background-color: #000; 
} 

這樣:

#mainnav.show { 
    display: block; 
    height: 75px; 
    width: 100%; 
    background-color: #000; 
} 

.show類,然後將在#mainnav選擇覆蓋display:nonedisplay:block,因爲新規則更具體。