Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   обработчик событий в другое место (https://javascript.ru/forum/misc/15215-obrabotchik-sobytijj-v-drugoe-mesto.html)

sympler 17.02.2011 14:14

обработчик событий в другое место
 
искал решение на форуме, но... поэтому создал новую тему

есть код (сократил для понимания моего вопроса)

<script> function gogo () { ...действия}</script>
<input type="button" onClick="gogo();" id="m13">


здесь все просто, по клику выполняю функцию gogo()

вопрос:
как написать тоже самое но при этом не трогать тэг инпут, то есть удалив из него вот это onClick="gogo();"

надеюсь сформулировал доступно.

walik 17.02.2011 14:17

Если на JQuery то можно:
$('input#m13').click(function() {
 // Код
});


Если на JS, то так если не ошибаюсь:
document.getElementById('m13').onclick=function(){
    //код
}

sympler 17.02.2011 18:31

на jquery работает
но нужно все таки на js, хотя по логике все вроде верно...

walik 17.02.2011 18:48

<html>
<head>
<script>
function setClick() {
	document.getElementById('m13').onclick = function() {
		alert('Не кликай больше');
	}
}
</script>
</head>
<body onload="setClick();">
<input type="button" id="m13" value="Кликни" /><br />
</body>
</html>


Вот, все работает.
Нужно вешать onclick только когда весь документ загружен.

sympler 20.02.2011 23:56

работает.
спасибо на этом. но хотел обойтись без лишнего html кода )

попробовал сам:
но не работает

<script>
document.getElementByTag('body').onload = function() {
	document.getElementById('m13').onclick = function() {
		alert('Не кликай больше');
	}
}
</script>

B~Vladi 21.02.2011 09:13

Цитата:

Сообщение от sympler
document.getElementByTag('body').onload

document.body.onload


getElementByTag - сам придумал?
В любом случае метод getElementsByTagName возвращает коллекцию элементов, даже если найден 1 узел, будь внимательнее.

sympler 25.02.2011 19:37

спасибо. это я уже разные варианты пробовал...

только не могу понять почему этот код не работает:
<html>
<head>
<script>
document.body.onload = function() {
	document.getElementById('m13').onclick = function() {
		alert('Не кликай больше');
	}
}
</script>

</head>
<body>
<input type="button" id="m13" value="Кликни" /><br />
</body>
</html>

B~Vladi 25.02.2011 19:50

Цитата:

Сообщение от sympler
только не могу понять почему этот код не работает

Потому что у body НЕТ события onload!!! :-E

Amphiluke 25.02.2011 19:50

Цитата:

Сообщение от sympler
только не могу понять почему этот код не работает:

Просто к моменту, когда начинает выполняться сценарий объект body еще не существует. Замените
Цитата:

Сообщение от sympler
document.body.onload = function() {

на
window.onload = function() {

sympler 28.02.2011 10:34

теперь еще один вопрос решен.
<html>
<head>
<script>
window.onload = function() {
	document.getElementById('m13').onclick = function() {
		alert('Не кликай больше');
	}
}
</script>

</head>
<body>
<input type="button" id="m13" value="Кликни" /><br />
</body>
</html>


ура. работает!


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