4

我有一个外部 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');

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

4

4 回答 4

6

你只是想要

window.addEventListener('load', numOfSelects);

于 2013-07-01T12:11:14.180 回答
2

尝试这个:

window.onload = function ()
{
numOfSelects();
};
于 2013-07-01T09:56:20.717 回答
2

你要

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

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

于 2013-07-01T09:58:08.520 回答
0

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

window.addEventListener('load', numOfSelects);

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

window.addEventListener('load', function(){
numOfSelects(param)
});
于 2020-07-29T07:23:29.717 回答