javascript参数传递动态动作处理程序

时间:2010-04-03 15:26:08

标签: javascript

我需要动态创建几个Div,我需要向他们添加“onmouseover”事件。但是,JAVASCRIPT“div.onmouseover = handler”无法传入参数。 如何在这些动态事件处理程序中传递参数?

3 个答案:

答案 0 :(得分:5)

您可以利用closures执行此操作:

function createHandlerFor(a, b, c) {
    return function(event) {
        // This function will be called later, and it has access
        // to 'a', 'b', and 'c'
    };
}

或使用命名函数(我的偏好,所以调用堆栈等更清晰);

function createHandlerFor(a, b, c) {
    function myNiftyHandler(event) {
        // This function will be called later, and it has access
        // to 'a', 'b', and 'c'
    };
    return myNiftyHandler;
}

使用:

div.onmouseover = createHandler(1, 2, "three");

...或通过addEventListener(标准)或attachEvent(IE <8)将其挂钩。

虽然您可以内联定义处理程序,但这样做会“关闭”您定义它的范围内的所有内容。使用单独的函数并传递参数可以使闭包尽可能小,这对内存管理非常有用。

闭包并不复杂,但它们有一些有趣的属性。 More here.

答案 1 :(得分:1)

您可以创建closure

div.onmouseover = function(){ handler(arguments,here); }

答案 2 :(得分:0)

您可以使用closure执行此操作:

myParam = "test";
div.onmouseover = function(){ alert(myParam); }