Внешний 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)
});