Передача параметров в attachEvent
От: F1aSh  
Дата: 01.06.08 22:36
Оценка:
Сабж. Я где то, помнится, находил функцию, екм-то реализованную. Переделанный attachEvent, в callback функцию которого можно было передавать параметры, однако сейчас ее у меня нет и найти ее я-что то не могу.
Кто знает, подскажите как быть.
for (i=0;i<neterminals.length;i++)
            neterminals[i].attachEvent('onclick', new function() {xajax_make_redactor('neterminal'+i, neterminals[i].innerHTML);}, false);

Вобщем, мне в функцию xajax_make_redactor необходимо передать 2 параметра — идентификатор объекта и его же innerHTML.
Я нахожу все объекты у которых class=neterminal, присваиваю им идентификаторы id=neterminalN, где N=0,..,СКОЛЬКО_УГОДНО, далее для каждого объекта (span) с идентификатором neternimalN мне необходимо сделать обработчик onclick. Если делать это так, как указано выше, почему-то событие onclick срабатывает СРАЗУ как только браузер видит строчку neterminals[i].attachEvent... Для функции без параметров все отлично работает, но мне необходимо передать на сервер эти данные чтобы потом обработать их при помощи php

02.06.08 12:47: Перенесено из 'Базы данных'
Re: Передача параметров в attachEvent
От: F1aSh  
Дата: 02.06.08 04:28
Оценка:
чет я тему попутал (( извините. Думал что в тебе Веб программирование удалили мое соощение — я там не особо внятно описал проблему. Прошу перенести в Веб программирование и удалить предыдущую тему. В этой проблема описана более обстоятельно
Re: Передача параметров в attachEvent
От: F1aSh  
Дата: 02.06.08 06:03
Оценка:
Здравствуйте, F1aSh, Вы писали:

FS>Сабж. Я где то, помнится, находил функцию, екм-то реализованную. Переделанный attachEvent, в callback функцию которого можно было передавать параметры, однако сейчас ее у меня нет и найти ее я-что то не могу.

FS>Кто знает, подскажите как быть.
FS>
for (i=0;i<neterminals.length;i++)
FS>            neterminals[i].attachEvent('onclick', new function() {xajax_make_redactor('neterminal'+i, neterminals[i].innerHTML);}, false);

FS>Вобщем, мне в функцию xajax_make_redactor необходимо передать 2 параметра — идентификатор объекта и его же innerHTML.
FS>Я нахожу все объекты у которых class=neterminal, присваиваю им идентификаторы id=neterminalN, где N=0,..,СКОЛЬКО_УГОДНО, далее для каждого объекта (span) с идентификатором neternimalN мне необходимо сделать обработчик onclick. Если делать это так, как указано выше, почему-то событие onclick срабатывает СРАЗУ как только браузер видит строчку neterminals[i].attachEvent... Для функции без параметров все отлично работает, но мне необходимо передать на сервер эти данные чтобы потом обработать их при помощи php

сделал следующим образом Не очень красиво, но...
neterminals[i].setAttribute('onClick', 'sendData(this);');

    function sendData(obj)
    {
    alert('tut');
        xajax_make_redactor(obj.id, obj.innerHTML);
    }

в Опере работает, в FF тоже. IE "не хочет" Ну и фиг с ним — мне главное чтобы хотябы в одном браузере работало )

Но тема остается открытой
Re: Передача параметров в attachEvent
От: EugeneIvanov Земля http://e-ivanov.ru/portfolio/
Дата: 02.06.08 09:49
Оценка:
Это называется "замыкания". Closures.

Лучше использовать библиотеку Prototype, там универсальная функция по навешиванию событий для всех браузеров.

Event.observe();

for (i=0;i<neterminals.length;i++)
Event.observe(neterminals[i], 'click', function(e) {xajax_make_redactor(e);}, false);

в функции xajax_make_redactor делаете так

function xajax_make_redactor(event){
event = event||window.event;
var event_element = Event.element(event);

var src_id = event_element.id;
var src_className = event_element.className;
//...= event_element.innerHTML;
// и т.д. что угодно

}

успехов
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.