无法对数字变量调用 toFixed

Cannot call toFixed on a number variable

本文关键字:调用 toFixed 变量 数字      更新时间:2023-09-26

我在控制台中收到以下错误:" 未捕获类型错误:未定义不是一个函数"

<script>
    //name : calculateResult()-->
    function calculateResult() {
        console.log("calculateResult() function called!");
        //1. Declare Variables-->
        var hoursWorked,
            jobCategory,
            jobCategorySelectedIndex,
            hoursEligibleForBasePay,
            hoursEligibleForOvertime,
            basePayAmount,
            overtimePayAmount,
            totalPayAmount,
            overtimePayRate;
        //2. Values for Local Variables-->
        hoursWorked = document.getElementById("txthoursWorked").value;
        console.log("hoursWorked = " + hoursWorked);
        //Get Select element choice: Job Category-->
        jobCategorySelectedIndex = document.getElementById("seljobCategory").selectedIndex;
        console.log("jobCategorySelectedIndex = " + jobCategorySelectedIndex);
        jobCategory = document.getElementById("seljobCategory").options[jobCategorySelectedIndex].value;
        console.log("jobCategory = " + jobCategory);
        //3. Do Calculations-->
        hoursWorked = parseFloat(hoursWorked);
        if (jobCategory == "M") {
            basePayRate = "25";
        } else if (jobCategory == "R") {
            basePayRate = "20";
        } else if (jobCategory == "S") {
            basePayRate = "15";
        }
        hoursEligibleForBasePay = 40;
        basePayAmount = basePayRate * hoursEligibleForBasePay;
        console.log("basePayAmount = " + basePayAmount);
        console.log("hoursEligibleForOvertime =" + hoursEligibleForBasePay);
        if (hoursWorked > 40) {
            hoursEligibleForOvertime = hoursWorked - 40;
        } else {
            hoursEligibleForOvertime = 0;
        }
        console.log("hoursEligibleForOvertime = " + hoursEligibleForOvertime);

        overtimePayRate = 1.5 * basePayRate;
        overtimePayAmount = overtimePayRate * hoursEligibleForOvertime;
        totalPayAmount = basePayRate + overtimePayAmount;
        console.log("overtimePayRate = " + overtimePayRate);
        console.log("overtimePayAmount = " + overtimePayAmount);
        console.log("totalPayAmount = " + totalPayAmount);
        //4. Display Results-->
        displayString = "Base Pay " + "$" + basePayAmount.toFixed(2) + "<br />" +
            "Overtime Pay &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + "$" + overtimePayAmount.toFixed(2) + "<br />"
        "Total Pay &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + "$" + totalPayAmount.toFixed(2);
        document.getElementById("divDisplay").innerHTML = displayString;

    }
</script>

错误位于"总付款金额"行上的显示字符串中

有什么想法吗?

实际错误实际上并不在该行上。

totalPayAmount定义如下:

totalPayAmount = basePayRate + overtimePayAmount;

basePayRate定义如下:

if (jobCategory == "M") {
    basePayRate = "25";
} else if (jobCategory == "R") {
    basePayRate = "20";
} else if (jobCategory == "S") {
    basePayRate = "15";
}

所以basePayRate是一个字符串。那么totalPayAmount也是一个字符串,它不会有toFixed方法。