我正在用JavaScript构建emi计算器, 以便在wordpress网站中使用。问题是我在控制台中收到以下错误。未捕获的ReferenceError:HTMLInputElement.onchange上未定义calculateEMI。我的代码如下
的HTML
<table>
<tr>
<th>Outstanding Principle</th>
<th>Interest Rate (%)</th>
<th>Tenure </th>
<th></th>
<th>EMI</th>
</tr>
<tr>
<td>
<input type="text" id="outstanding_principle" onchange="calculateEMI(this);">
</td>
<td>
<input type="text" id="interest_rate" onchange="calculateEMI(this);">
</td>
<td>
<input type="radio" id="years" name="selection" value="years" onchange="calculateEMI(this);" /> Years
<input type="radio" id="months" name="selection" value="Months" onchange="calculateEMI(this);" /> Months
</td>
<td>
<input type="text" id="tenure" onchange="calculateEMI(this);">
</td>
<td>
<input type="text" readonly="true" id="emi">
</td>
</tr>
</table>
我对jquery的代码如下, 请告诉我我错了。
<script>
function calculateEMI(){
var emi = 0;
var P =0;
var n = 1;
var r = 0;
if(jQuery("#outstanding_principle").val !== ""){
P = parseFloat(jQuery("#outstanding_principle").val());
if(jQuery("#interest_rate").val !== ""){
r = parseFloat(parseFloat(jQuery("#interest_rate").val()) / 100);
}
if(jQuery("#tenure").val() !== ""){
n = parseFloat(parseFloat(jQuery("#tenure").val()));
}
}
if (P !== 0 && n !== 0 && r !== 0 && jQuery("#years").is(':checked')){
n = n * 12;
emi = parseFloat((P * r / 12) * [Math.pow((1 + r / 12), n)] / [Math.pow((1 + r / 12), n) - 1]);
jQuery("#emi").val(emi.toFixed(2));
}else if(P !== 0 && n !== 0 && r !== 0 && jQuery("#months").is(':checked')){
emi = parseFloat((P * r / 12) * [Math.pow((1 + r / 12), n)] / [Math.pow((1 + r / 12), n) - 1]);
jQuery("#emi").val(emi.toFixed(2));
}
}
我正在使用页面构建器。另请注意, 控制台也在顶部显示了此信息。 JQMIGRATE:已安装迁移版本1.4.1
#1
你的代码工作正常。
function calculateEMI(){
var emi = 0;
var P =0;
var n = 1;
var r = 0;
if(jQuery("#outstanding_principle").val !== ""){
P = parseFloat(jQuery("#outstanding_principle").val());
if(jQuery("#interest_rate").val !== ""){
r = parseFloat(parseFloat(jQuery("#interest_rate").val()) / 100);
}
if(jQuery("#tenure").val() !== ""){
n = parseFloat(parseFloat(jQuery("#tenure").val()));
}
}
if (P !== 0 && n !== 0 && r !== 0 && jQuery("#years").is(':checked')){
n = n * 12;
emi = parseFloat((P * r / 12) * [Math.pow((1 + r / 12), n)] / [Math.pow((1 + r / 12), n) - 1]);
jQuery("#emi").val(emi.toFixed(2));
}else if(P !== 0 && n !== 0 && r !== 0 && jQuery("#months").is(':checked')){
emi = parseFloat((P * r / 12) * [Math.pow((1 + r / 12), n)] / [Math.pow((1 + r / 12), n) - 1]);
jQuery("#emi").val(emi.toFixed(2));
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<th>Outstanding Principle</th>
<th>Interest Rate (%)</th>
<th>Tenure </th>
<th></th>
<th>EMI</th>
</tr>
<tr>
<td>
<input type="text" id="outstanding_principle" onchange="calculateEMI(this);">
</td>
<td>
<input type="text" id="interest_rate" onchange="calculateEMI(this);">
</td>
<td>
<input type="radio" id="years" name="selection" value="years" onchange="calculateEMI(this);" /> Years
<input type="radio" id="months" name="selection" value="Months" onchange="calculateEMI(this);" /> Months
</td>
<td>
<input type="text" id="tenure" onchange="calculateEMI(this);">
</td>
<td>
<input type="text" readonly="true" id="emi">
</td>
</tr>
</table>
#2
- 代码存在错误。
- 其他代码可能有误。
- 使用开发人员工具栏检查错误。
- 使用calculateEMI();而不是calculateEMI(this);
function calculateEMI() {
var emi = 0;
var P = 0;
var n = 1;
var r = 0;
if ($("#outstanding_principle").val !== "") {
P = parseFloat($("#outstanding_principle").val());
if ($("#interest_rate").val !== "") {
r = parseFloat(parseFloat($("#interest_rate").val()) / 100);
}
if ($("#tenure").val() !== "") {
n = parseFloat(parseFloat($("#tenure").val()));
}
}
if (P !== 0 && n !== 0 && r !== 0 && $("#years").is(':checked')) {
n = n * 12;
emi = parseFloat((P * r / 12) * [Math.pow((1 + r / 12), n)] / [Math.pow((1 + r / 12), n) - 1]);
$("#emi").val(emi.toFixed(2));
} else if (P !== 0 && n !== 0 && r !== 0 && $("#months").is(':checked')) {
emi = parseFloat((P * r / 12) * [Math.pow((1 + r / 12), n)] / [Math.pow((1 + r / 12), n) - 1]);
$("#emi").val(emi.toFixed(2));
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table border="1">
<tr>
<th>Outstanding Principle</th>
<th>Interest Rate (%)</th>
<th>Tenure Type</th>
<th>Tenure</th>
<th>EMI</th>
</tr>
<tr>
<td>
<input type="text" id="outstanding_principle" onchange="calculateEMI();">
</td>
<td>
<input type="text" id="interest_rate" onchange="calculateEMI();">
</td>
<td>
<input type="radio" id="years" name="selection" value="years" onchange="calculateEMI();" /> Years
<input type="radio" id="months" name="selection" value="Months" onchange="calculateEMI();" /> Months
</td>
<td>
<input type="text" id="tenure" onchange="calculateEMI();">
</td>
<td>
<input type="text" readonly="true" id="emi">
</td>
</tr>
</table>
#3
我尝试了你的代码, 最初我遇到的错误与你的错误相同, 但是我注意到你没有关闭script标记。我关闭了脚本标签, 并尝试了代码, 错误消失了。
希望这对你也有帮助。
评论前必须登录!
注册