Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Перехват события onclick (https://javascript.ru/forum/misc/46198-perekhvat-sobytiya-onclick.html)

maternik 01.04.2014 16:36

Перехват события onclick
 
Привет, братцы! Хочу вызывать метод при нажатии на кнопку.
Кнопка такая:
<input name="кнопа" type="button" value="Пыщ" />

Пробовал запиливать в таком духе:
window.onload = function () {
var экземпляр=new конструктор();

var тема=document.getElementsByName("кнопа")[0];
тема.addEventListener ("click", экземпляр.метод(), true);

// или в таком:
document.getElementsByName("кнопа")[0].onclick=экземпляр.метод();
}

Но всё это срабатывало уже при загрузке страницы. Тогда пробовал вешать onclick на кнопку:
<input name="кнопа" type="button" value="Пыщ" onclick="экземпляр.метод();"/>

Всё тлен и не робит. А как следует эти вещи делать?

ksa 01.04.2014 16:38

Цитата:

Сообщение от maternik
Тогда пробовал вешать onclick на кнопку:
<input name="кнопа" type="button" value="Пыщ" onclick="экземпляр.метод();"/>

Всё тлен и не робит.

В чем именно выражается неработоспособность вот этого варианта?

ksa 01.04.2014 16:39

Цитата:

Сообщение от maternik
тема.addEventListener ("click", экземпляр.метод(), true);
// или в таком:
document.getElementsByName("кнопа")[0].onclick=экземпляр.метод();

Что возвращает
экземпляр.метод()

?

maternik 01.04.2014 16:48

Цитата:

Сообщение от ksa (Сообщение 305454)
Что возвращает
экземпляр.метод()

?

" is not defined"
Это, видимо, экземпляр

рони 01.04.2014 16:51

maternik,
а если убрать () ? экземпляр.метод()

maternik 01.04.2014 16:59

Цитата:

Сообщение от рони (Сообщение 305460)
maternik,
а если убрать () ? экземпляр.метод()

Не, он походу экземпляр класса где-то роняет :(

maternik 01.04.2014 17:30

Убрал карочи window.onload = function () {}
оставил голимый var экземпляр=new конструктор();
низнаю почему, но заработало
как я люблю js! =)

UPD: наверное, экземпляр объекта должен быть создан раньше, чем броузер обнаружит вызов метода этого объекта, даже если мы его не вызываем

jsnb 01.04.2014 18:03

Ну так onload срабатывает когда вообще всё прогрузится, включая графику. Естественно до этого при нажатии на кнопку запускается неизвестно что.
Цитата:

Сообщение от maternik (Сообщение 305465)
наверное, экземпляр объекта должен быть создан раньше, чем броузер обнаружит вызов метода этого объекта, даже если мы его не вызываем

Ничего подобного:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<body>

<input type="button" value="test" onclick="obj.method()">

<script>
function Test() {
  this.name = 'test';
  this.method = function() {
    alert(this.name);
  }
}
var obj = new Test();
</script>
</body>
</html>


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