Сабж. Я где то, помнится, находил функцию, екм-то реализованную. Переделанный 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: Перенесено из 'Базы данных'
чет я тему попутал (( извините. Думал что в тебе Веб программирование удалили мое соощение — я там не особо внятно описал проблему. Прошу перенести в Веб программирование и удалить предыдущую тему. В этой проблема описана более обстоятельно
Здравствуйте, 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 "не хочет"

Ну и фиг с ним — мне главное чтобы хотябы в одном браузере работало )
Но тема остается открытой
Это называется "замыкания". 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;
// и т.д. что угодно
}
успехов