将匿名函数作为参数传递以供以后使用

时间:2011-05-16 22:59:04

标签: javascript

我遇到了我在HTML5中使用的脚本问题。 这是函数

function loadImage(loc,after,para){
        var img = new Image();
        img.src = loc;
        if(typeof(after) != "undefined" && typeof(para) != "undefined"){
            img.onloadeddata  = after(img,para);
        }else if(typeof(after) != "undefined"){
            img.onloadeddata  = after(img);
        }
        return img;
}

这就是所谓的

window.globalFriends[i][2]=loadImage('http://graph.facebook.com/'+window.globalFriends[i][0]+'/picture', function (a){
    updateLoaders();
    loadingDrawPerson(a);});

我要做的是发送一个函数作为参数然后被调用。 它有点工作,但它是一种奇怪的方式。例如;所有的图像都会被加载但是onloadeddata要么提前触发函数,要么在函数进入loadImage函数之前执行该函数。

您对我的故障脚本有什么看法?

感谢您的阅读 保罗

2 个答案:

答案 0 :(得分:3)

这样的一行:

img.onloadeddata  = after(img,para);

表示“使用参数afterimg”调用para函数,并将结果分配给onloadeddata。“相反,如果您要分配函数onloadeddata,执行此操作:

img.onloadeddata = function() { after(img, para); };

答案 1 :(得分:1)

它是img.onload它需要一个功能。

尝试

img.onload = function() {
    after(img, para);
}

我认为你错过了para参数

window.globalFriends[i][2]=loadImage('http://graph.facebook.com/'+window.globalFriends[i][0]+'/picture', function (a){
    updateLoaders();
    loadingDrawPerson(a);}/*, para */); // <- where is para?