5

我有以下循环,我多次使用:

    for(var i = 0; i < $options.length; i++) { //...

每次我想使用那个循环时,我不想用那个代码重复自己,而是想把它变成一个函数。

我尝试了以下但收到错误“我未定义”

function optionLoop( $options, callback) {
    for(var i = 0; i < $options.length; i++) {
        callback();
    }
}

用法:

    optionLoop($options, function(){
         // Do it
    });

但这行不通。如何将循环变成可重用的函数,我可以将另一个函数传递给该函数?还有一个问题……我想这样做是不是疯了?

谢谢!

4

2 回答 2

7

您应该将循环值传递给您的回调:

function optionLoop( $options, callback) {
    for(var i = 0; i < $options.length; i++) {
        callback(i, $options[i]);
    }
}

然后,当你调用它时,在你的回调函数中使用它们:

optionLoop($options, function(index, value) {
});

这是小提琴:http: //jsfiddle.net/vGHK5/


更新:如果您希望能够从函数内部跳出循环,请使用:

function optionLoop( $options, callback) {
    for(var i = 0; i < $options.length; i++) {
        if ( callback(i, $options[i]) === false ) break;
    }
}

然后,false如果您想休息,请返回。

这是小提琴:http: //jsfiddle.net/vGHK5/1/

于 2012-08-27T01:14:23.700 回答
3

您是否尝试i在回调中访问?你可能想把它传递给callback

于 2012-08-27T01:14:09.450 回答