当函数已经有一个参数时,如何获得调用元素的引用

时间:2011-11-02 04:29:31

标签: javascript parameters reference call

function myFunction(par) {
...
}


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

如何获取myFunction内的调用者元素的引用?

2 个答案:

答案 0 :(得分:3)

在您的示例中,您要将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的返回值需要是 function (或一串Javascript)才能在以后执行。

里面函数,你将引用调用者元素。该函数内的this将返回当前正在调用该事件的元素。

答案 1 :(得分:1)

//这就是说调用这个函数并将它返回到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); }

example 1

或者您可以使用call,以便在侦听器中this引用该元素。

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

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

example 2