Rückgabewert der Jquery-Funktion

Lesezeit: 2 Minuten

Ich habe eine Funktion erstellt, um eine UL/LI zu durchlaufen. Das funktioniert perfekt, mein Problem ist, den Wert an eine andere Variable zurückzugeben. Ist das überhaupt möglich? Was ist die beste Methode dafür? Vielen Dank!

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);

  • Es ist möglich und so würde ich es machen. Bekommst du keinen Wert zurück?

    – Jason Kaczmarsky

    28. Juli 2011 um 14:56 Uhr

  • Ihr Code scheint korrekt zu sein, können Sie Firebug ausführen und sehen, ob die Konsole etwas auflistet?

    – karllindmark

    28. Juli 2011 um 14:56 Uhr

  • return funktioniert auf diese Weise in $.each nicht. return verlässt einfach die foreach-Schleife.

    – Naveen

    28. Juli 2011 um 15:00 Uhr


  • Dies funktioniert nicht, weil thisArray zurückgegeben wird[3] gibt nur von der inneren Funktion .each() zurück, nicht von der getMachine-Funktion. Wie andere Poster gezeigt haben, müssen Sie thisArray festlegen[3] in eine lokale Variable und return(false) von der inneren Funktion, um die .each()-Iteration zu stoppen, und dann können Sie diese innere Variable von getMachine zurückgeben.

    – jfriend00

    28. Juli 2011 um 15:03 Uhr

  • Return sollte für ein $.each() eigentlich false oder true sein. Wo falsch wie eine Pause ist und wahr wie eine Fortsetzung.

    – Schotteckel

    28. Juli 2011 um 15:03 Uhr

Benutzer-Avatar
Alex Turpin

Ich bin mir des allgemeinen Zwecks der Funktion nicht ganz sicher, aber Sie könnten dies immer tun:

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);

Benutzer-Avatar
Milimetrisch

Die return-Anweisung, die Sie haben, steckt in der inneren Funktion fest, sodass sie nicht von der äußeren Funktion zurückkehrt. Sie brauchen nur etwas mehr Code:

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);

  • Sie müssen hinzufügen return false; innerhalb der if-Anweisung, von der abzubrechen ist each() nach dem Auftrag.

    – Sanghyun Lee

    28. Juli 2011 um 15:02 Uhr


1176640cookie-checkRückgabewert der Jquery-Funktion

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy