Javascript 如何使用参数添加处理程序?

Javascript 如何使用参数添加处理程序?,javascript,javascript-events,Javascript,Javascript Events,如果我尝试像这样传递参数。\u单击(i),我会得到错误 BBtor = function(element) { //some code } BBtor.prototype = { initialize: function() { for (var i = 0; i < 3; i++) { $addHandler($get("Button"+i),'mouseup' , this._Click(i)); } },

如果我尝试像这样传递参数。\u单击(i),我会得到错误

 BBtor = function(element) {
//some code

}   
 BBtor.prototype = {


    initialize: function() {
      for (var i = 0; i < 3; i++) {
       $addHandler($get("Button"+i),'mouseup' , this._Click(i));
      }
    },

    _Click: function(param) {
           alert(param);
    }
}
如果我尝试这样做:

 $addHandler($get("Button"+i),'mouseup' , this._Click(i));
它不起作用了


这对我很有用:

$addHandler($get("Button"+i),'mouseup' , function(xx) { return function() { that._Click(xx) } } (i)); 
但我有另一个问题。如何删除dispose函数中的处理程序

dispose: function() {             
      for (var i = 0; i < 3; i++) {
     var that = this;
         $removeHandler($get("Button"+i),'mouseup' , function(xx) { return function() { that._Click(xx) } } (i));          

    },
dispose:function(){
对于(变量i=0;i<3;i++){
var=这个;
$removeHandler($get(“Button”+i),'mouseup',function(xx){return function(){that.\u Click(xx)}}}(i));
},
我得到一个错误:

Microsoft JScript运行时错误: Sys.invalidoOperationException:处理程序 不是通过 Sys.UI.DomEvent.addHandler方法


无论如何,从按钮中删除点击事件是否重要?

好吧,
\u click
是一个函数,但是
\u click(i)
不是--
\u click(i)
是函数作为参数传入时返回的值。在这种情况下,
\u click(i)
是未定义的,因为
\u Click
不包含任何
return
语句。可能您需要这样的语句:

var that = this;
$addHandler($get("Button"+i),'mouseup' , function() {that._Click(i)});
尽管
i
是在外部函数
initialize
中定义的,但它可以在内部(匿名)函数
function(){that.\u单击(i)}
中访问

至于
that=this
这件事,这是必要的,因为在内部函数中,
this
的值会改变(我不确定在这种情况下它会变成什么,但可能不是你所期望的)。另一种方法是:

$addHandler($get("Button"+i),'mouseup' , function() {BBtor._Click(i)});
我发现了,希望能有帮助

似乎你必须接受两个参数,因为假设e在那里

var args=new Array();
args[0]=someVariable;
args[1]=someOtherVariable;
$addHandler(按钮“单击”,函数.createCallback(按钮单击,参数));


必须有更多的代码…你的for循环在哪个对象中?这甚至不是有效的JavaScript。这是你拥有的吗?如果不是,请发布一个更完整的示例。你仍然有语法错误。你在
for
循环后缺少一个
}
。首先检查语法是否正确。Felix Kling,语法是否正确。检查我关于错误的更新。第一个选项(带有该选项的选项)有效,但我总是得到2。第二个选项:我尝试了这个方法,但得到了:Microsoft JScript运行时错误:对象不支持这个属性或方法这对我有效:$addHandler($get(“Button”+I),'mouseup',function(xx){return function(){that.\单击(xx)}}}(I));
$addHandler($get("Button"+i),'mouseup' , function() {BBtor._Click(i)});
function ButtonClicked(e, args)
{
 Useful code...
}