JavaScript. Обработчик события -- метод класса
От: solenko  
Дата: 05.06.06 11:00
Оценка:
Здравствуйте.
Есть скрипт, который на лету создает форму. Скрипт выполнен в виде класса для того, чтобы этих форм можно было создать несколько. Мне необходимо на обработку нажатия кнопки навесить выполнение метода класса.
Как это сделать?

PS. Кажется непонятно объяснил что нужно, но как это сказать подругому не представляю.
Re: JavaScript. Обработчик события -- метод класса
От: anonymous Россия http://denis.ibaev.name/
Дата: 05.06.06 11:26
Оценка:
Здравствуйте, solenko, Вы писали:

S>Здравствуйте.

S>Есть скрипт, который на лету создает форму. Скрипт выполнен в виде класса для того, чтобы этих форм можно было создать несколько. Мне необходимо на обработку нажатия кнопки навесить выполнение метода класса.
S>Как это сделать?

S>PS. Кажется непонятно объяснил что нужно, но как это сказать подругому не представляю.


// В общем случае, если обработчиком нужно сделать метод
// myMethod с параметрами k, l и m.
button.addEventListener("click", function(a, b, c)
{
    return function()
    {
        this.myMethod(a, b, c)
    } 
} (k, l, m), false);
Re: JavaScript. Обработчик события -- метод класса
От: ZeVVs Россия http://www.sibirix.ru
Дата: 05.06.06 13:26
Оценка:
Весьма удобно (IMHO) делать для кнопки(и не только) js-обертки, передавая в конструкторе id объекта.

function __get(id)
{
    if (document.layers)
    {
        return document.layers[id];
    }
    if (document.getElementById)
    {
        return document.getElementById(id);
    }       
    if (document.all)
    {
        return document.all[id];
    }
}


function button(id)
{
    this.object = __get(id);
    this.id = id;
    this.defaultClassName = this.object.className;
    this.object.object = this;

    this.object.onclick = function onClick() {
    
        
    }
    this.object.onmouseover = function onmouseover() {
    
        this.className = this.object.defaultClassName + 'Active';
    }
    this.object.onmouseout = function onmouseout() {

        this.className = this.object.defaultClassName;
    }
}
This game has no name. It will never be the same.
Re: JavaScript. Обработчик события -- метод класса
От: kan_izh Великобритания  
Дата: 05.06.06 14:15
Оценка:
solenko wrote:

> Есть скрипт, который на лету создает форму. Скрипт выполнен в виде

> класса для того, чтобы этих форм можно было создать несколько. Мне
> необходимо на обработку нажатия кнопки навесить выполнение метода класса.
> Как это сделать?
>
> PS. Кажется непонятно объяснил что нужно, но как это сказать подругому
> не представляю.
Я обычно так пишу:
function TheClass()
{
  this.foo = 'blah'
}
TheClass.prototype=
{
  aMethod: function(id)
  {
    var self = this // вот тут и то, что тебе нужно ;)
    getElementById(id).onclick = function()
    {
      alert(self.foo) // а тут оно используется. ;)
    }
  }
}
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re: JavaScript. Обработчик события -- метод класса
От: MasterMind Россия  
Дата: 06.06.06 15:18
Оценка:
Здравствуйте, solenko, Вы писали:

S>Здравствуйте.

S>Есть скрипт, который на лету создает форму. Скрипт выполнен в виде класса для того, чтобы этих форм можно было создать несколько. Мне необходимо на обработку нажатия кнопки навесить выполнение метода класса.
S>Как это сделать?

S>PS. Кажется непонятно объяснил что нужно, но как это сказать подругому не представляю.


к дополнению для броузерной гибкости
    function CheckedForm(e) {
      var obj = document.getElementById("apt");
      if (obj != null && typeof obj == "object") {
        if (obj.attachEvent) {
          try {
            obj.attachEvent("onclick", function (e) { Compare("Email2ID","EmailID",locale["JAVASCRIPT_ERROR_EMAILS_CMP"], e); });
          } catch(err) {
            ;
          }
        } else if (obj.addEventListener) {
          try {
            obj.addEventListener("click", function (e) { Compare("Email2ID","EmailID", locale["JAVASCRIPT_ERROR_EMAILS_CMP"], e); }, true);
          } catch(err) {
            ;
          }
        } else {
        }
      }
    }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.