我正在用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="http://www.srcmini.com/years" onchange="calculateEMI(this);
" />
Years
<
input type="radio" id="months" name="selection" value="http://www.srcmini.com/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="http://www.srcmini.com/years" onchange="calculateEMI(this);
" />
Years<
input type="radio" id="months" name="selection" value="http://www.srcmini.com/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="http://www.srcmini.com/years" onchange="calculateEMI();
" />
Years<
input type="radio" id="months" name="selection" value="http://www.srcmini.com/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标记。我关闭了脚本标签, 并尝试了代码, 错误消失了。
【错误WordPress jQuery表单错误说未引用函数()】希望这对你也有帮助。
推荐阅读
- 在相关的Post WordPress中排除草稿发布
- esc_attr()和sanitize_text_field()之间的确切区别
- 来自wordpress主题的functions.php文件错误
- #yyds干货盘点#Pandas数据清洗实用指南
- Linux操作相关
- Eureka 是为微服务提供服务注册和发现的产品()
- 10kv配电房辅助综合监控管理系统
- Mock工具介绍,为什么使用Mock()
- centos添加文件并依次传入对应id