我需要动态创建几个Div,我需要向他们添加“onmouseover”事件。但是,JAVASCRIPT“div.onmouseover = handler”无法传入参数。 如何在这些动态事件处理程序中传递参数?
答案 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); }