我正在用javascript构建emi计算器,以便在wordpress网站中使用。问题是我在控制台中收到以下错误。 未捕获的ReferenceError:未定义calculateEMI 在HTMLInputElement.onchange 我的代码如下
HTML
select name, state from my table where (state IS NOT NULL) OR (name != 'mary');
我对jquery的代码如下,请告诉我我错了。
<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>
我正在使用页面构建器。另请注意,控制台也在顶部显示了此信息。 JQMIGRATE:已安装迁移版本1.4.1
答案 0 :(得分:0)
您的代码工作正常。
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>
答案 1 :(得分:0)
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>
答案 2 :(得分:0)
我尝试了您的代码,最初与您的错误相同,但是我注意到您没有关闭 script 标记。我关闭了 script 标签,并尝试了代码,错误消失了。
希望这对您也有帮助。