传递变量作为函数param不起作用 - 语法问题?

时间:2014-04-18 08:34:49

标签: javascript jquery html

我有一个函数可以更改我的img src并将其淡入和淡出:

function changeImg(e, f) {
    $('#image').fadeOut(300, function(){
        $(this).attr('src', e+f.img).bind('onreadystatechange load', function(){
           if (this.complete) $(this).fadeIn(300);
        });
    });
}

如您所见,我传递了var imgArrvar curr两个参数,这些参数在.click()函数中给出:

var imgArr = [{ object1: '..', object2: '..', img: 'image1.png'}, and more array elements];
$divs.click(function() {
    var curr = $(this).index();

    // function where I pass imgArr (an array) and var curr
    changeImg(imgArr, curr);
});

问题是changeImg()不起作用。它根本不知道数组和curr。当我将函数放在click处理程序中时,一切正常imgArr并且curr已知。我认为这可能是一个语法问题?我必须写e+f不同吗?我也试过e+[f]

提前致谢!

编辑:让我更清楚我希望在changeImg以下内容:

$(this).attr('src', imgArr[curr].img).bind(...);

1 个答案:

答案 0 :(得分:1)

假设e是一个对象数组,f是你应该使用的所需项目的索引:

$(this).attr('src', e[f].img);

但我认为这只是朝着正确方向迈出的一步。