Javascript 如何为onclick事件返回两个函数
可能重复: 我有几个链接var a[]上有一个onclick事件。到目前为止,通过使用一个函数,这项功能运行良好:Javascript 如何为onclick事件返回两个函数,javascript,function,onclick,return,Javascript,Function,Onclick,Return,可能重复: 我有几个链接var a[]上有一个onclick事件。到目前为止,通过使用一个函数,这项功能运行良好: function setCurrentImage(x) { return function() { alert("Image: "+x); return false; } } for(var i = 0; i < a.length; i++) { a[i].onclick = setCurrentImage(i);
function setCurrentImage(x) {
return function() {
alert("Image: "+x);
return false;
}
}
for(var i = 0; i < a.length; i++) {
a[i].onclick = setCurrentImage(i);
}
问题是,我需要两个函数。这段代码根本不起作用:
function setCurrentImage(x) {
return function() {
alert("Image: "+x);
}
}
function setCurrentNote(x) {
return function() {
alert("Note: "+x);
}
}
for(var i = 0; i < a.length; i++) {
a[i].onclick = function() {
setCurrentImage(i);
setCurrentNote(i);
return false;
}
}
这个代码有什么问题?提前感谢:您调用的每个函数都返回一个函数,但实际上什么都不做。 您永远不会调用它们返回的函数 一旦你解决了这个问题,你就会有另一个问题;所有内联处理程序共享相同的i变量。
你需要把它包装在一个生命中。你调用的每个函数都返回一个函数,但实际上什么都不做。 您永远不会调用它们返回的函数 一旦你解决了这个问题,你就会有另一个问题;所有内联处理程序共享相同的i变量。
你需要把它包装在生活中。要扩展SLaks的答案:
function setCurrentImage(x) {
alert("Image: "+x);
}
function setCurrentNote(x) {
alert("Note: "+x);
}
function setOnclickHandler(x) {
return function() {
setCurrentImage(x);
setCurrentNote(x);
return false;
};
}
for(var i = 0; i < a.length; i++) {
a[i].onclick = setOnclickHandler(x);
}
要扩展SLaks的答案:
function setCurrentImage(x) {
alert("Image: "+x);
}
function setCurrentNote(x) {
alert("Note: "+x);
}
function setOnclickHandler(x) {
return function() {
setCurrentImage(x);
setCurrentNote(x);
return false;
};
}
for(var i = 0; i < a.length; i++) {
a[i].onclick = setOnclickHandler(x);
}
为什么不起作用?发生了什么?为什么不起作用?发生什么事了?多谢各位,我现在工作!新年快乐谢谢大家,我现在工作!新年快乐