个性化阅读
专注于IT技术分析

错误WordPress jQuery表单错误说未引用函数?

我正在用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标记。我关闭了脚本标签, 并尝试了代码, 错误消失了。

希望这对你也有帮助。

赞(0)
未经允许不得转载:srcmini » 错误WordPress jQuery表单错误说未引用函数?

评论 抢沙发

评论前必须登录!