2016-02-17 131 views
-2

附加的javascript函數應該使用兩個輸入範圍中的值以及表中初始單元格的值。然後它應該計算貸款的總還款額。Javascript計算函數未返回值

這是不是在預計'td還款'單元輸出?

<script> 
 

 
    var repayment = function() { 
 

 
    }; 
 

 
document.repaymentcalc.amount.onchange = repayment; 
 

 
}; 
 

 
makeSomething(); 
 

 
function makeSomething() { 
 
    $('tbody tr').each(function(idx, row) { 
 
    var $row = $(row); 
 
    var initialRateCell = $row.find('td')[1]; 
 
    var repaymentCell = $row.find('td')[3]; 
 
    var rate = parseFloat($(initialRateCell).html()); 
 
    var repaymentVal = computeRepayment(rate); 
 
    $(repaymentCell).html(repaymentVal.repayment); 
 
    }); 
 
} 
 
$("#calcform :input").change(function() { 
 
    makeSomething(); 
 
}); 
 

 
function computeRepayment(rate) { 
 
    var x = parseInt(document.repaymentcalc.amount.value, 10); 
 
    var y = parseInt(rate, 10)/36500; 
 
    var z = parseInt(document.repaymentcalc.numberpayments.value, 10); 
 

 

 
var repayment = (x * y * z) + x; 
 

 
return { 
 
    repayment: '£' + repayment.toFixed(2), 
 
}; 
 
} 
 

 
< /script>
</head> 
 

 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 

 

 

 
<form name="repaymentcalc" id="calcform" action=""> 
 

 
    Amount 
 
    <input id="amount" type="range" min="0" max="2500" step="50" value="100" style="width: 150px">Term 
 
    <input id="numberpayments" type="range" min="0" max="420" step="30" value="30" style="width: 150px"> 
 

 

 
</form> 
 

 
<table id="mortgagetable"> 
 

 
    <thead> 
 

 
    <tr class="producthd"> 
 
     <th class="lenderhd">Lender</th> 
 
     <th class="initialratehd">% p.a. fixed</th> 
 
     <th class="rateshd">% APR</th> 
 
     <th class="repaymenthd">Total Repayment</th> 
 
    </tr> 
 

 
    </thead> 
 

 
    <tbody> 
 

 
    <tr class="product"> 
 
     <td class="lender">Bank1</td> 
 
     <td class="initialrate">285</td> 
 
     <td class="rates">1204.39</td> 
 
     <td class="repayment"></td> 
 
    </tr> 
 
    <tr class="product"> 
 
     <td class="lender">Bank2</td> 
 
     <td class="initialrate">292</td> 
 
     <td class="rates">1221.5</td> 
 
     <td class="repayment"></td> 
 
    </tr> 
 
    <tr class="product"> 
 
     <td class="lender">Bank3</td> 
 
     <td class="initialrate">292</td> 
 
     <td class="rates">1295</td> 
 
     <td class="repayment"></td> 
 
    </tr> 
 
    <tr class="product"> 
 
     <td class="lender">Bank4</td> 
 
     <td class="initialrate">128</td> 
 
     <td class="rates">1221.5</td> 
 
     <td class="repayment"></td> 
 
    </tr> 
 

 
    </tbody> 
 

 
</table>

+1

要從一個函數返回一個值,你需要一個'return'語句。 – Pointy

+0

首先,你的還款功能是空的。所以當然沒有什麼會發生。 其次,函數computePayment中的本地可變還款是本地的,所以它在通話結束時下降。 –

+1

另外,您發佈的代碼在語法上不是正確的,所以在解決該問題之前它不會執行任何操作。檢查開發者控制檯。 – Pointy

回答

0

嘗試

function computeRepayment(rate) { 
    var x = parseInt(document.repaymentcalc.amount.value, 10); 
    var y = parseInt(rate, 10)/36500; 
    var z = parseInt(document.repaymentcalc.numberpayments.value, 10); 


    return (x * y * z) + x; 
} 

和你的函數還款看上去是空的

+0

那麼,爲什麼這個不行VAR還款=(X * Y * Z)+ X; 回報{ 還款: '£' + repayment.toFixed(2), };} – Arron

+0

應該可以工作,但它會成爲一個對象 –

0

你缺少你的函數返回語句。如果你想使用它,你需要返回你的價值:

function computeRepayment(rate) { 
    var x = parseInt(document.repaymentcalc.amount.value, 10); 
    var y = parseInt(rate, 10)/36500; 
    var z = parseInt(document.repaymentcalc.numberpayments.value, 10); 

    var repayment = (x * y * z) + x; 

    return repayment // to return your value 
} 

你的代碼有一些錯誤。有一個空功能repayment和其他不正確的東西。在提出詳細問題之前,再次檢查您的代碼。

例如爲:

線6:刪除};

+0

已經檢查並更新了代碼片段,以便函數還原返回值,但它仍然不起作用?請指點任何指示? – Arron

+0

就像我那樣,您的代碼中有一些錯誤。看看被調用的內容以及代碼失敗的位置。記錄你的東西並正確調試。 –

+0

那麼我不明白爲什麼它以前的工作,如果有錯誤,使其失敗? – Arron

0

要實際獲得功能返回,您需要輸入return的值。

正如你可以在這個簡單的例子看看:

function multiplyTwoNumbers(numberOne, numberTwo){ 
    var result = numberOne * numberTwo; 
    return result; // Here you can see how the value is returned. 
} 
console.log(multiplyTwoNumbers(5,3); // Here we log the returned value. 

在你的情況,我認爲你應該返回repayment變量。

function computeRepayment(rate) { 
    var x = parseInt(document.repaymentcalc.amount.value, 10); 
    var y = parseInt(rate, 10)/36500; 
    var z = parseInt(document.repaymentcalc.numberpayments.value, 10); 

    var repayment = (x * y * z) + x; 

    return repayment; // here you can see that your value is now returned 
} 
+0

你能看到爲什麼我更新的代碼段不起作用,那麼請嗎?我已經返回了一個值,但它仍然沒有在td單元格中顯示任何內容? – Arron