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
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);
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
11766400cookie-checkRückgabewert der Jquery-Funktionyes
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