无法调用固定数字变量

时间:2014-11-17 07:26:30

标签: javascript undefined-function

我在控制台中收到以下错误: “未捕获的TypeError:undefined不是函数”

<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>

错误位于Total PayAmount线上的显示字符串

任何想法?

1 个答案:

答案 0 :(得分:0)

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

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方法。