2016-04-27 134 views
4

我得到了錯誤的計算結果,函數沒有返回.investment元素中的3個值,因此我可以計算它們並將它們輸出到.payout元素中。我在這裏做錯了什麼?jQuery函數不返回值

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>

回答

6

問題是,你正試圖從jQuery的.each()環形折返。您需要傳遞索引並獲取元素,而不是使用循環。

要打破$ .each循環,必須在循環回調中返回false。 將真正的跳轉返回到下一次迭代,相當於在正常循環中繼續。

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

哇!那很快!謝謝你,先生!我想我需要更多地研究循環! :) – Randy

+0

@Randy這是正常的循環不是問題。但在jQuery中,當你返回時,這意味着它要麼斷開循環,要麼繼續循環。它不會將值返回給外部函數。 – RRK