Внешний JS с событием onLoad

У меня есть внешний файл 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 FILE

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

показывает только первое предупреждение. Я чувствую, что где-то допустил действительно глупую ошибку.

3 ответа

Решение

Ты просто хочешь

window.addEventListener('load', numOfSelects);

Попробуй это:

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

Ты хочешь

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

Включив скобки, вы фактически вызывали функцию и передавали ее возвращение (что было ничем) в качестве второго аргумента "addEventListener", а не ссылались на функцию

В этом сценарии ответ уже дан

window.addEventListener('load', numOfSelects);

Другой вариант использования может потребовать передать параметр в функции

window.addEventListener('load', function(){
numOfSelects(param)
});
Другие вопросы по тегам