Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Не могу передать event в функцию-обработчик (https://javascript.ru/forum/css-html/30428-ne-mogu-peredat-event-v-funkciyu-obrabotchik.html)

inslide 03.08.2012 20:01

Не могу передать event в функцию-обработчик
 
function d(event)
{
	alert(typeof(event));
}

var h = document.getElementById('h');
h.onkeypress = d(event);


alert() вылетает с типом "undefined". Почему объект события не передаётся?

vadim5june 03.08.2012 20:12

<input id=h>
<script>function d(event)
{alert(typeof(event));
};
var h = document.getElementById('h');
h.onkeypress = d;
</script>

inslide 03.08.2012 20:20

Оказывается, дело было в том, что я подгружал js раньше момента, где определял input. Когда поменял местами, всё стало хорошо:
<input id = "h" type = "text">
<script src = "popup.js"></script>

Странно, разве иначе работать не должно? Всегда что ли нужно подгружать js после html?

devote 03.08.2012 20:25

Цитата:

Сообщение от inslide
Всегда что ли нужно подгружать js после html?

для этого нужно вешать свои скрипты на события загрузки DOM дерева.

vadim5june 03.08.2012 20:26

у Вас и h.onkeypress = d(event);
тоже неправильно присваивалась-должна быть функция
------
если подгружаете раньше то нужно так
function d(event)
{alert(typeof(event));
};
window.onload=function(){var h = document.getElementById('h');
h.onkeypress = d;
}

inslide 03.08.2012 20:55

Можете подсказать подробнее, в чём разница между d, d() И d(event) при присваивании событию?

devote 03.08.2012 20:58

Цитата:

Сообщение от inslide
в чём разница между d, d() И d(event) при присваивании событию?

d - ссылка на функцию
d() - стразу же вызывает функцию
d(event) - стразу же вызывает функцию и передает аргумент event

inslide 03.08.2012 21:09

Спасибо) Кармой сейчас не смог выразить.


Часовой пояс GMT +3, время: 16:11.