可能重复:
How do I pass the value (not the reference) of a JS variable to a function?
我有几个链接(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);
}
}
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;
}
}
这段代码有什么问题?提前谢谢:)
答案 0 :(得分:3)
您调用的每个函数都会返回一个函数,但实际上并没有执行任何操作 你永远不会调用他们返回的函数。
一旦你解决了这个问题,你就会遇到另一个问题;所有内联处理程序共享相同的i
变量
你需要把它包装在IIFE中。
答案 1 :(得分:1)
扩展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);
}