2013-04-26 25 views
1

在我的網頁我有一個隱藏的<div>,如下列:HTML隱藏和顯示 - 代碼何時運行?

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

當用戶點擊一個按鈕,我有一個javascript代碼調用$('#myid').show("slow");,從而顯示該<div>

我的問題是什麼時候<div>內的代碼被調用:當頁面第一次加載或僅當它顯示時?

我擔心的是,這裏面<div>我想打一個頁面計數器(用),當顯示<div>只應被調用。另一種方法是將代碼放在javascript內,但我寧願將它放在頁面中。

+1

當它被加載。由於它存在於DOM中,並且不是由JavaScript創建的,因此當HTML文件解析開始時,瀏覽器會「讀取」瀏覽器。 – 2013-04-26 13:13:21

+0

'display:none'並不意味着它不在那裏,它只是表示它沒有被顯示。 – lifetimes 2013-04-26 13:14:25

回答

0

在div中的代碼獲得儘可能加載頁面調用。 因此,即使div保持隱藏狀態,每次加載頁面時計數器都會被調用。 所以你必須以某種方式使用JavaScript這樣的:

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

<script> 
function showCounter() { 
    document.getElementById("myid").innerHTML = '<script>counter-code</script>'; 
    document.getElementById("myid").show('slow'); 
} 
</script> 

和功能showCounter添加到您的按鈕。

-1

嘗試這樣的:

$(document).ready(function() { 
$('#myid').show("slow") 
} 
+0

你能解釋一下這是怎麼回事?我不熟悉JavaScript,我只是在這個頁面上進行維護。 – iomartin 2013-04-26 13:56:00

+0

他沒有紅色的問題xD 只是顯示你的div如果文件加載完成。 – Vloxxity 2013-04-26 13:59:43

+0

-1:根本沒有讀過這個問題。 – 2013-04-26 14:01:30

0

它將在頁面加載時運行,display:none僅影響可見性並與代碼操作層無關(實際上,一些瀏覽器完全忽略CSS並可能顯示它)。

如果您想要一段代碼只在單擊JavaScript按鈕時運行,則應該將該代碼附加到Javascript函數。做一個空div在網頁上,然後使用該函數的代碼放在裏面:

<div id="jsDiv"></div> 

<script> 
function jsCode() { 
    document.getElementById('jsDiv').innerHTML = 'Whatever you want'; 
} 
</script> 

然後連接jsCode()功能,您的按鈕,當函數被調用的HTML纔會被渲染。如果您使用服務器端腳本(PHP,Rails等)或更復雜的東西,請查看jQueryAJAX函數。