1

在这个问题上,我一直在用头撞墙,但我似乎无法弄清楚。我知道还有很多其他非常相似的问题,我几乎都看过,但似乎没有一个有我正在寻找的答案(但话又说回来,我可能是盲人今天)。

所以我有一个 JavaScript 函数,我将一个函数作为参数传入以执行回调。我的函数中有一个参数,所以当我进行回调时,我传入的参数需要在调用回调时跟进。

但是,当我添加第二个参数时,该值始终未定义。

示例代码:

<div style="padding: 15px;">
<a href ="#" onclick="FirstFunction('first param');">test</a>
</div>

//call the first function from the click event and pass in the value
function FirstFunction(param1) {
    //call my process function, but pass in a function as a parameter with the value from param1
    myProcessFunction(function(){SecondFunction(param1)});
    return false;
}

function SecondFunction(param1, param2) {
    alert(param1 + ', ' + param2);
}

function myProcessFunction(callback) {
    if (typeof callback == 'function') {
        //call my passed in function, return the original values, along with a new value into my "SecondFunction"
        callback(this, 'second param');
    }
}

任何帮助,将不胜感激。

我试过了:

callback.call(this, 'param 2')

callback(arguments, 'param 2')

callback.call(arguments, 'param 2')

可能还有大约 20 种其他组合......所以我现在在猜测工作。

这是我的jsFiddle:

http://jsfiddle.net/FVsDK/8/

编辑

谢谢 Jani,这是 jsFiddle 中的一个有效解决方案:http: //jsfiddle.net/FVsDK/9/

4

1 回答 1

3

错误是因为你的回调有点乱:)

myProcessFunction(function(){SecondFunction(param1)});

这使用回调函数调用 myProcessFunctionfunction() { ... }

因此,在 myProcessFunction 中,callback(this, 'second param');调用的是上述函数,它根本不接受任何参数。

如果您希望 secondFunction 从 myProcessFunction 获取参数,则必须传递它而不是匿名回调:

myProcessFunction(SecondFunction)

在这里,SecondFunction 的参数是this'second param'

或者,如果您想将 param1 传递给它,您也可以这样做:

myProcessFunction(function(a, b) { SecondFunction(param1, a, b); })

在这里,SecondFunction 的参数将是 param1 的值,this'second param'.

于 2012-05-24T15:11:17.523 回答