繁体   English   中英

为什么要定位<script> in HTML for window.onload event matters?

[英]Why does positioning of <script> in HTML for window.onload event matters?

我有一个窗体,该窗体动态地隐藏文本输入字段,具体取决于加载时对选项字段的初始选择。 经过反复试验,我意识到必须将<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>

事件window.onload是一个全局事件,在加载了页面的所有资源(包括DOM,图像,框架等)后触发。 然后,为什么仍需要将<script>标记放置在<form>元素下方?

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

更改:

window.onload = init();

至:

window.onload = init;

JavaScript和HTML正常工作。 但我看到您的代码有些不明白。

window.onload = init(); 

该行表示立即使用execute init函数并将函数结果设置为onload事件。 这就是当您将其放置在form元素下时它起作用的原因。

这是因为您的代码中有错字:

window.onload = init();

实际上,这实际上是立即调用init函数(然后将window.onload设置为undefined)。 尝试:

window.onload = init;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM