为什么

我有一个动态隐藏文本输入字段的表单,具体取决于加载时选项字段的初始选择。经过一番尝试和错误后,我意识到必须将

<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、图像、框架等)加载后触发。那么,为什么还需要将

I have a form that hides a text input field dynamically, depending on the initial choice of an option field upon loading. After some trial and error, I realise that the <script> tag has to be placed below the <form> elements in order for this functionality to work:

<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>

The event window.onload is a global event that is triggered after all resources of the page including DOM, images, frames, etc have loaded. Then, why is it still necessary for the <script> tag to be placed below the <form> elements?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夜灵血窟げ 2025-01-12 10:28:09

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

更改:

window.onload = init();

到:

window.onload = init;

Because your executing the init function instead assigning the pointer to the function...

Change:

window.onload = init();

To:

window.onload = init;
第几種人 2025-01-12 10:28:09

这是因为您的代码中存在拼写错误:

window.onload = init();

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

window.onload = init;

It's because of a typo in your code:

window.onload = init();

This is actually calling the init function immediately (and then setting window.onload to undefined). Try:

window.onload = init;
薄暮涼年 2025-01-12 10:28:09

JavaScript 和 HTML 工作正常。但我发现你的代码有些不理解。

window.onload = init(); 

此行表示立即执行 init 函数并将函数结果设置为 onload 事件。这就是为什么当您将其放置在表单元素下时它会起作用的原因。

JavaScript and HTML works correctly. But I see some miss understand on your code.

window.onload = init(); 

This line means use execute init function immediately and set function result as onload event. That is the reason why it works when you place it under form element.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文