DHTML ссылка на функцию из созданного объекта

Skom
На сайте с 02.12.2006
Offline
165
484

Вот такой вот колхозный вопрос.

Что-то не могу понять/найти вариант.

Имеется создание объекта.

В общем, пофиг какого.

Например:

NewDiv=document.createElement('div');

NewDiv.innerHTML='lalala';

Теперича, надо к нему событие прикрутить.

Например, при двойном щелчке мышкой, запуск функции "Test"

NewDiv.ondblclick=Test;

В таком варианте все работает отлично.

Проблемы начинаются при попытке передать этой функции параметры.

Т.е. если я пишу

NewDiv.ondblclick=Test(222)

начинаются грабли.

Я в JS совсем плохо, всё больше пхп и прочие сервер-сайд.....

А тут что-то полез в ajax. Всё отлично, но мелкие проблемы мучат.....

Cras amet qui numquam amavit quique amavit cras amet
Zlo_606ep
На сайте с 14.12.2006
Offline
129
#1

копать надо не dhtml, а dom-модель и создание объектов

была проблема, как передать параметр this созданной функции проблема с ie, то есть firefox понимает конструкцию вида b.setAttribute('onclick', "do(this)");, а ие - нет, ему b.setAttribute('onclick',function(){do(this)}); подавай, возможно поможет

основы dom копать тут и тут

Kolyaj
На сайте с 28.03.2006
Offline
69
#2

Skom, в Prototype.js есть один метод для функции


Function.prototype.bind = function() {
var __method = this, args = $A(arguments), object = args.shift();
return function() {
return __method.apply(object, args.concat($A(arguments)));
}
}

Он возвращает функцию, вызываемую в контексте первого аргумента и с теми параметрами, с которыми был вызван bind (начиная со второго). Т.е. описываете эту функцию и присваиваете событие уже так


NewDiv.ondblclick = Test.bind(window, 222);

P.S. Что непонятно, уточню.

Skom
На сайте с 02.12.2006
Offline
165
#3

Огромное всем спасибо.

Во всех браузерах заработало так

NewDiv.ondblclick=function(){Test(222)};

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий