Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Помощь со "слущателем" (https://javascript.ru/forum/events/17187-pomoshh-so-slushhatelem.html)

newinjs 09.05.2011 21:02

Помощь со "слущателем"
 
Всем привет. Хочу чуть-чуть разобраться с ЯС, чтобы делать простенькие скрипты. Сейчас просто тренеруюсь.

new.html
-------------------------

<script type='text/javascript' src='js.js'></script>
<a href='#' id='but' style='border: 0'>Alert One</a>
<a href='#' id='but2' style='border: 0'>Alert Two</a>


js.js
---------------------------

window.onload = loadlisteners;

function loadlisteners(){

	add_event('but', 'click', show_alert(msg));
	add_event('but2', 'click', show_alert(msg));
		
}


function add_event(el, type, handler){

	el.addEventListener(type, function(){handler} false); // я так понимаю, что здесь что-то не так, между фигурными скобками?
	
}


function show_alert(msg){

	alert(msg);
	
}


Это только для ФФ. Почему не работает? Только код готовый не пишите, я сам хочу :)

И еще вопрос: иногда в скриптах пишут function bla_bla(e){ ... }
Я понимаю, что е это ссылка на событие, но откуда это событие берется, если нигда выше переменная е не объявлена так e = event || window.event; ?

melky 09.05.2011 21:55

el.addEventListener(type, function(){handler} false); // я так понимаю, что здесь что-то не так, между фигурными скобками?


да. запятую забыли. и еще скобки :).

element.addEventListener( событие, обработчик, всплытие)

так лучше. если хотите сами, то не смотрите на то,что снизу

el.addEventListener(type, function(){handler*!*()*/!*}*!*,*/!* false);


вот тут есть отличное описание, что такое ивент

walik 09.05.2011 22:22

Цитата:

Сообщение от newinjs
add_event('but', 'click', show_alert(msg));

but - вы передаете не элемент, а просто строчку.
Получайте элемент по ID: document.getElementById('but')
и вот это и передавайте функции add_event.

show_alert(msg) - Тут вы должны передавать функцию, а не результат выполнения другой функции.
То есть передавайте:
function() {alert(msg);}


Ну а подробнее про все это почитайте по ссылке выше которую дал melky


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