Javascript 如何使用参数添加处理程序?
如果我尝试像这样传递参数。\u单击(i),我会得到错误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)); } },
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...
}