2013-08-27 48 views
3

我想隱藏divA並顯示divB。如果我點擊一個按鈕,我想隱藏divB並顯示divA。我不想使用JQuery。display ='none'在javascript中不起作用

我有麻煩在網頁加載時隱藏divA。當我點擊按鈕時,divB被正確隱藏。

我的文檔

<script> 
    var doNotShow= document.getElementById('divA'); 
    doNotShow.style.display = 'none'; 
</script> 

的事情是開始時加入這一點,這是行不通的。奇怪的是,當後來,我試圖通過按鈕點擊隱藏divB,然後divB隱藏它應該。 divA位於文件中的javascript部分之後。

+2

爲什麼不直接設置'divA'的CSS來'顯示:none' –

+1

「耍大牌是文件中的JavaScript部分之後。」 < - 這是問題。將腳本標記放置在HTML部分之後,它將起作用 –

+0

確保不要使用JavaScript來初始隱藏您的元素,除非在頁面加載時不總是隱藏它。只需使用像我(和@PedroEstrada)建議的CSS規則。它更加優雅高效。 – plalx

回答

8

我的文檔

年初加入本與文檔中存在的查詢ID必須後執行document.getElementById元素,否則null將被退回。

您可以將腳本標記移動到頁面的底部(或者簡單地放在這些元素之後),或者將其包裝在window.onload處理程序中。


這是很好的做法,有<script>標籤中的結束</body>因此,所有的元素都已經存在於頁之前的權利,你不必擔心window.onload或DOM就緒(DOMContentLoaded)處理器封裝代碼。

+1

謝謝,它工作得很好。 –

1

JavaScripts在讀取時執行。如果在腳本之後定義了divA,那麼就沒有任何東西可以執行腳本了,如果您在Firefox中使用Firebug或Chrome中的開發人員工具(會出現TypeError),您將看到該腳本。

1

在DOM中存在​​之前,您的代碼正在運行。這就是爲什麼它不起作用。

要解決您當前的解決方案的問題,請在文檔中的​​標記之後放置腳本。

但是,您不需要使用JavaScript,並且可能不應該最初隱藏您的​​元素。您可以使用下面的CSS規則代替:

#divA { display: none; } 
相關問題