为什么 <script> 在 HTML 中对于 window.onload 事件的定位很重要?

Que*_*low 0 html javascript events dom-events

我有一个动态隐藏文本输入字段的表单,具体取决于加载时选项字段的初始选择。经过一番尝试和错误后,我意识到<script>必须将标签放置在<form>元素下方才能使此功能正常工作:

<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>
Run Code Online (Sandbox Code Playgroud)

该事件window.onload是一个全局事件,在页面所有资源(包括 DOM、图像、框架等)加载完成后触发。那么,为什么标签还需要<script>放在<form>元素下面呢?

xan*_*ded 5

因为您执行的是init function而不是将指针分配给函数......

改变:

window.onload = init();
Run Code Online (Sandbox Code Playgroud)

到:

window.onload = init;
Run Code Online (Sandbox Code Playgroud)