5

何度か使用する次のループがあります。

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

そのループを使用するたびにそのコードで繰り返すのではなく、それを関数に変換したいと思います。

次のことを試しましたが、「iisundefined」というエラーが表示されます

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

使用法:

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

しかし、それは機能していません。ループを再利用可能な関数に変換して、別の関数を渡すことができるようにするにはどうすればよいですか?そしてもう1つ質問...私はこれをやりたいと夢中になっていますか?

ありがとう!

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 に答える