web-dev-qa-db-ja.com

JQuery関数の戻り値

UL/LIを反復処理する関数を作成しました。これは完璧に機能し、私の問題は値を別の変数に返すことです。これも可能ですか?これに最適な方法は何ですか?ありがとう!

function getMachine(color, qty) {
    $("#getMachine li").each(function() {
        var thisArray = $(this).text().split("~");
        if(thisArray[0] == color&& qty>= parseInt(thisArray[1]) && qty<= parseInt(thisArray[2])) {
            return thisArray[3];
        }
    });

}

var retval = getMachine(color, qty);
28
Stephen S.

関数の一般的な目的は完全にはわかりませんが、いつでもこれを行うことができます。

function getMachine(color, qty) {
    var retval;
    $("#getMachine li").each(function() {
        var thisArray = $(this).text().split("~");
        if(thisArray[0] == color&& qty>= parseInt(thisArray[1]) && qty<= parseInt(thisArray[2])) {
            retval = thisArray[3];
            return false;
        }
    });
    return retval;
}

var retval = getMachine(color, qty);
43
Alex Turpin

返されたステートメントは内部関数に留まっているため、外部関数からは返されません。もう少しコードが必要です:

function getMachine(color, qty) {
    var returnValue = null;
    $("#getMachine li").each(function() {
        var thisArray = $(this).text().split("~");
        if(thisArray[0] == color&& qty>= parseInt(thisArray[1]) && qty<= parseInt(thisArray[2])) {
            returnValue = thisArray[3];
            return false; // this breaks out of the each
        }
    });
    return returnValue;
}

var retval = getMachine(color, qty);
15
Milimetric