2016-02-17 102 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