1

可能重复:
如何将 JS 变量的值(而不是引用)传递给函数?

我有几个链接(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;
    }
}

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

4

2 回答 2

3

您调用的每个函数都返回一个函数,但实际上并没有做任何事情。
你永远不会调用它们返回的函数。

一旦你解决了这个问题,你就会遇到另一个问题;您的所有内联处理程序共享相同的i变量。
您需要将其包装在 IIFE 中。

于 2012-12-31T15:35:26.523 回答
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);
}
于 2012-12-31T15:39:33.477 回答