【问题标题】:External JS with onLoad Event带有 onLoad 事件的外部 JS
【发布时间】:2013-07-01 09:51:36
【问题描述】:

我有一个外部 js 文件,它有一个函数,可以在文档正文加载后运行。这是我到目前为止所拥有的,但它没有按应有的方式工作。请帮忙。

外部 JS 文件

window.document.body.addEventListener('load', numOfSelects());

function numOfSelects()
{
  var selects = document.getElementsByTagName('select');
  alert(selects.length);
}

调用此脚本的 HTML 文件确实有一些选择字段。警报有效,但显示为 0。警报显示后,可以看到正文已加载。显然这不是我想要的。我究竟做错了什么?谢谢大家。

我也试过这个:

还是不行。这是我的代码:

父文件

<html>
<head>
<title>File 1</title>
<script src='file1.js'></script>
</head>

<body>

<select id='dd1'><option>First</option><option>Second</option></select>
<select id='dd2'><option>First</option><option>Second</option></select>

</body>
</html>

JS 文件

alert('start');
window.document.body.addEventListener('load', function(){alert(document.getElementsByTagName('select').length)}); 
alert('stop');

仅显示第一个警报。我觉得我在某个地方犯了一个非常愚蠢的错误。

【问题讨论】:

    标签: onload external-js


    【解决方案1】:

    你只是想要

    window.addEventListener('load', numOfSelects);

    【讨论】:

    • 我不是故意复制body和doc标签。
    【解决方案2】:

    试试这个:

    window.onload = function ()
    {
    numOfSelects();
    };
    

    【讨论】:

      【解决方案3】:

      你想要

      window.document.body.addEventListener('load', numOfSelects);
      

      通过包含括号,您实际上是在调用函数并将它的返回值(什么都不是)作为“addEventListener”的第二个参数传递,而不是引用函数

      【讨论】:

      • 也试过了,也没用。啊!不过谢谢。这让我很恼火,看起来很简单。
      • 你仍然得到相同的结果吗?
      • 即使改掉这行代码并没有使程序按预期运行,它仍然是代码的问题。
      • 当我尝试您输入的内容时,它没有正确编译,因此该行之后的任何代码都不起作用。在这些情况下,我所做的是包装两个警报,即 alert(1);在代码行和 alert(2) 之前;后。所以 alert(1) 只运行而不运行第二个。但是我确实尝试过:window.document.body.addEventListener('load', alert(document.getElementsByTagName('select').length));然后返回 0。
      • addEventListener 采用函数句柄。通过包含括号,您可以立即调用该函数。警报也是如此。您不是在告诉 addeventlistener 在加载主体后调用 alert ,而是告诉它调用 alert() 返回的任何内容,这没什么。
      【解决方案4】:

      在这种情况下,答案已经给出了

      window.addEventListener('load', numOfSelects);
      

      另一个用例可能需要在函数中传递参数

      window.addEventListener('load', function(){
      numOfSelects(param)
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-27
        • 1970-01-01
        • 1970-01-01
        • 2017-06-19
        • 1970-01-01
        • 2010-11-17
        • 1970-01-01
        相关资源
        最近更新 更多