Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何为onclick事件返回两个函数_Javascript_Function_Onclick_Return - Fatal编程技术网

Javascript 如何为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);

可能重复:

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

这个代码有什么问题?提前感谢:

您调用的每个函数都返回一个函数,但实际上什么都不做。 您永远不会调用它们返回的函数

一旦你解决了这个问题,你就会有另一个问题;所有内联处理程序共享相同的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);
}

为什么不起作用?发生了什么?为什么不起作用?发生什么事了?多谢各位,我现在工作!新年快乐谢谢大家,我现在工作!新年快乐