2012-02-14 29 views
1

我有一個窗體,動態隱藏文本輸入域,取決於加載時選項字段的初始選擇。一些試驗和錯誤之後,我意識到<script>標籤是爲了放在下面的<form>元素此功能工作:爲什麼在HTML中定位<script> for window.onload事件很重要?

<html> 
.... 
<body> 
.... 
    <form> 
    <select name=choice> 
    <option value=0 selected>Default</option> 
    <option value=1>Others</option> 
    </select> 
    <input type=text name=others></input> 
    </form> 
.... 
    <script type='text/javascript'> 
    function init() 
    { 
    var A = document.forms[0].choice; 
    var B = document.forms[0].others; 
    if(A.options[A.selectedIndex].value == 0) B.style.display = 'none'; 
    } 
    window.onload = init(); 
    </script> 
.... 
</body> 
</html> 

事件window.onload是的所有資源後,引發了全球性的活動包括DOM,圖像,框架等頁面已加載。那麼,爲什麼<script>標籤仍然需要放置在<form>元素下方?

回答

4

因爲你的執行init function而不是分配的指針功能...

變化:

window.onload = init(); 

要:

window.onload = init; 
+1

謝謝。你是對的 :) – 2012-02-14 05:54:36

1

JavaScript和HTML正常工作。但是我看到一些小姐明白你的代碼。

window.onload = init(); 

此行表示立即使用execute init函數,並將函數結果設置爲onload事件。這就是爲什麼當你把它放在表單元素下時工作的原因。

1

這是因爲在你的代碼中的錯字:

window.onload = init(); 

這實際上是立即調用init功能(然後設置window.onload爲undefined)。請嘗試:

window.onload = init; 
相關問題