как получить ссылку на элемент вызывающего, когда функция уже имеет параметр - PullRequest
0 голосов
/ 02 ноября 2011
function myFunction(par) {
...
}


el1.onclick=myFunction(5);
el2.onclick=myFunction(7);

Как получить ссылку на элемент вызывающего абонента внутри myFunction?

Ответы [ 2 ]

3 голосов
/ 02 ноября 2011

В вашем примере вы присваиваете возвращаемое значение от myFunction(5) до el1.onclick, а возвращаемое значение от myFunction(7) до el2.onclick.

Возьмите следующий пример:

el1.onclick=myFunction(5);

В приведенном выше примере выполняется myFunction(5).Затем возвращаемое значение этой функции, назовем ее myval, присваивается el1.onclick.Это эквивалентно:

var myval = myFunction(5);
el1.onclick = myval;

Не ясно, что это то, что вы хотели.Чтобы это работало, возвращаемое значение из myFunction должно быть функцией (или строкой Javascript), которая будет выполнена позже.

Внутри это функция, которую вы бы ссылались на элемент вызывающего.this внутри этой функции вернет элемент, для которого в данный момент вызывается событие.

1 голос
/ 02 ноября 2011

// это говорит о вызове этой функции и назначении того, что она возвращает onclick el1.onclick = myFunction (5);

Вы хотите использовать закрытие el1.onclick = function () {myFunction (5);}

Для ссылки на элемент вы можете передать объект в

function test(elem, x){    
    elem.innerHTML = x;
} 

document.getElementById("foo").onclick = function(){ test(this, 1); }

пример 1

или вы можете использовать call , чтобы в слушателе this ссылался на элемент.

function test(x){    
    this.innerHTML = x;
}

document.getElementById("foo").onclick = function(){ test.call(this, 1); }

пример 2

...