如何为onclick事件返回两个函数

时间:2012-12-31 15:32:55

标签: javascript function onclick return

  

可能重复:
  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;
    }
}

这段代码有什么问题?提前谢谢:)

2 个答案:

答案 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);
}