2016-04-27 38 views
4

Ich bekomme die falsche Berechnung und die Funktion gibt nicht die 3 Werte von .investment Elemente zurück, so dass ich in der Lage sein werde, sie zu berechnen und sie in .payout Elemente auszugeben. Was mache ich hier falsch?jQuery-Funktion gibt keine Werte zurück

function investmentArray() { 
 
    $('.investment').each(function() { 
 
    var text = $(this).text().slice(0, -2); 
 
    text = parseFloat(text.replace(/,/g, '')); 
 
    text = Number(text); 
 
    return text; 
 
    }); 
 
}; 
 

 
function payoutCalc() { 
 
    var i = investmentArray(); 
 
    return i * 1.8; 
 
} 
 

 
var payoutArray = function() { 
 
    var el = $('.payout'); 
 
    el.each(function() { 
 
    var result = Number(payoutCalc()).toFixed(2); 
 
    $(this).html(result + " $"); 
 
    }); 
 
} 
 
payoutArray();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
    <th>Investment</th> 
 
    <th>Payout</th> 
 
    </tr> 
 
    <tr> 
 
    <td class="investment">1,937.00 $</td> 
 
    <td class="investment">285.00 $</td> 
 
    <td class="investment">1,926.00 $</td> 
 
    </tr> 
 
    <tr> 
 
    <td class="payout"></td> 
 
    <td class="payout"></td> 
 
    <td class="payout"></td> 
 
    </tr> 
 
</table>

Antwort

6

Problem ist, dass Sie von jquery .each() Schleife zurückzukehren versuchen. Sie müssen den Index übergeben und Elemente erhalten, anstatt die Schleife zu verwenden.

Um eine $ .each-Schleife zu unterbrechen, müssen Sie im Loop-Callback den Wert false zurückgeben. Wenn True zurückgegeben wird, wird zur nächsten Iteration übergegangen, was einer Fortsetzung in einer normalen Schleife entspricht.

function investmentArray(c) { 
 
    text = $('.investment').eq(c).text().slice(0, -2); 
 
    text = parseFloat(text.replace(/,/g, '')); 
 
    text = Number(text); 
 
    return text; 
 
}; 
 

 
function payoutCalc(c) { 
 
    var i = investmentArray(c); 
 
    return i * 1.8; 
 
} 
 

 
var payoutArray = function() { 
 
    var el = $('.payout'); 
 
    el.each(function(i, val) { 
 
    var result = Number(payoutCalc(i)).toFixed(2); 
 
    $(this).html(result + " $"); 
 
    }); 
 
} 
 
payoutArray();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
    <th>Investment</th> 
 
    <th>Payout</th> 
 
    </tr> 
 
    <tr> 
 
    <td class="investment">1,937.00 $</td> 
 
    <td class="investment">285.00 $</td> 
 
    <td class="investment">1,926.00 $</td> 
 
    </tr> 
 
    <tr> 
 
    <td class="payout"></td> 
 
    <td class="payout"></td> 
 
    <td class="payout"></td> 
 
    </tr> 
 
</table>

+0

Wow! Das war schnell! Vielen vielen Dank, Sir! Ich denke, ich muss mehr über Schleifen lernen! :) – Randy

+0

@Randy Es ist kein Problem in normalen For-Schleife. Aber im Falle von jQuery, wenn Sie zurückkommen, bedeutet das, dass es entweder Schleife bricht oder Schleife wiederholt. Es wird keinen Wert für die äußere Funktion liefern. – RRK

Verwandte Themen