2010-08-02 24 views
1

DIV這是我的DIV不能隱瞞我用JavaScript

<div id="MyDiv"> 
    <div class="fa_close"><a href="#" onclick="hFa()"><img src="fadead/close1.jpg" /></a></div> 
    <h1><i>THIS WEEK'S</i></h1> 
    <img src="fadead/special.jpg" alt="special" /> 
</div> 

,我試圖掩蓋它是這樣,但它不想工作

document.getElementById("MyDiv").style.visibility = "hidden"; 

我在做什麼錯?

+2

你有相同的「ID」值超過一個元素?如果是這樣,停止這樣做。 – Pointy 2010-08-02 13:56:45

+0

不,那就是頁面上只有這個名字的唯一DIV .... – Etienne 2010-08-02 13:58:24

+0

您可能想使用Firebug或IE8網絡工具來驗證可見性樣式是否已更改。 – 2010-08-02 14:00:19

回答

4

的代碼,你提供的優秀作品。必須有其他的干擾。測試:http://jsbin.com/ilofi

請記住,如果元素尚未加載,請記住document.getElementById("MyDiv")返回undefined。因此,document.getElementById("MyDiv")是在以下情況下undefined

<script type="text/javascript"> 
alert(document.getElementById("MyDiv")); 
</script> 

<div id="MyDiv"></div> 

但它在下列情況下,元素:

<div id="MyDiv"></div> 

<script type="text/javascript"> 
alert(document.getElementById("MyDiv")); 
</script> 

認沽腳本儘量靠近頁面儘可能的兩種爲此和底部爲performance reasons

3

如果你真的想隱藏什麼用

document.getElementById("MyDiv").style.display = "none"; 
+0

Nope仍然不起作用,也許是因爲我試圖將其隱藏在HEAD標記內? – Etienne 2010-08-02 13:59:46

+1

所以我猜你已經寫入代碼在加載body標籤之前在head標籤中執行。所以請確保通過在主體標籤的末尾寫入相同的代碼來完全加載您的身體 – KoolKabin 2010-08-02 15:02:28

+1

@Etienne:當您嘗試從標籤執行某些操作時,大多數情況下,腳本甚至在呈現目標元素之前運行。這會導致腳本不起作用。確保在渲染完成後運行它。如果你看看我上面寫的代碼,它工作正常。這是因爲我在渲染目標元素後調用它。 – Kangkan 2010-08-02 17:59:40

0

我有以下HTML測試:

<body> 
<div id="MyDiv"> 
    <div class="fa_close"><a href="#" onclick="hFa()"><img src="fadead/close1.jpg" /></a></div> 
    <h1><i>THIS WEEK'S</i></h1> 
    <img src="fadead/special.jpg" alt="special" /> 
</div> 
<input type="button" onClick="document.getElementById('MyDiv').style.visibility = 'hidden'; "/> 
</body> 

,它是我的FF和IE8可以正常使用。

什麼是瀏覽器使用的是?你嘗試過調試嗎?

1

爲什麼不給它一個display:nonestyle?由於這個JavaScript在頭腦裏,你顯然打算擁有它是DIV的起始條件,但我不能想到一個很好的理由與JS,而不是良好的老HTML和CSS來做到這一點。

4

您必須確保您的代碼在之後運行瀏覽器實際上已經看到您的標記。如果你試圖隱藏從<head>一個<script>塊的元素,然後在瀏覽器將不會看到的元素又是那麼它不會找到它。

移動你的<script>塊到<body>的盡頭,看看會發生什麼!