Javascript: функция для события - PullRequest
       5

Javascript: функция для события

2 голосов
/ 26 октября 2010

Итак, я хотел бы создать функцию из этого:

element.onclick = function(e){
    ... code ...
}

Примерно так:

element.onclick  = doSomething(e);
element2.onclick = doSomething(e);

function doSomething(e){
    ... code ...
}

Таким образом, я мог бы вызвать функцию несколько раз, но таким образом e не передается как событие, поэтому не работает.

Как мне это сделать?

Извините, если я скажу что-нибудь глупое, мне это будет сложно

Ответы [ 6 ]

3 голосов
/ 26 октября 2010

Не совсем точно, что вы имеете в виду, но вы можете объявить функцию и использовать ее в качестве обработчика для нескольких элементов. Аргумент event все равно будет передан.

element.onclick = someHandler;
anotherElem.onclick = someHandler;
yetAnotherElem.onclick = someHandler;

function someHandler(e){
    e = e || event;
    ... code ...
}

Каждый из 3 элементов будет вызывать один и тот же обработчик и иметь в качестве аргумента объект события.


РЕДАКТИРОВАНИЕ: Что касается вашего редактирования, вы вызывали функцию и присваивали ее возвращаемое значение onclick вместо назначения самой функции.

Из вашего комментария видно, что вы это поняли. : О)

1 голос
/ 26 октября 2010

Сначала вы должны дать имя своей функции.

function clickEvent(e) {
    ... do stuff ...
}

Затем прикрепите его к элементу так:

element.onClick = clickEvent;

Когда событие инициируется, оно автоматически передается в функцию.

1 голос
/ 26 октября 2010

Я думаю, вы спрашиваете, как создать нормальную функцию и использовать ее по-разному?

function fnName(e) {
  ... code ...
}

Можно использовать по-разному:

element.onclick = fnName;

fnName();

//Call it however you like?
1 голос
/ 26 октября 2010
function onClickHandler(e){
    //Do stuff...
}

element.onclick = onClickHandler;
0 голосов
/ 26 октября 2010

вы можете сделать это:

element.onclick = function (e) {

myfunc();

}

функция myfunc ()

{

... код

}

0 голосов
/ 26 октября 2010

Вам нужно записать его в виде:

function fnName(e){
    ... code ...
}

, а затем вы можете вызвать fnName и передать нужную вам переменную.

Если ваша функция действительно не нуждается в 'e ', вы можете написать

function fnName(){
    ...code...
}
...