添加两个变量导致Nan

时间:2014-12-02 21:11:43

标签: javascript

我一直试图添加下面代码中显示的两个不同的变量,但无论我做什么,结果都是Nan,我在这里做错了吗?我试过玩了一段时间,但我发现我的代码没有任何问题!

                            <script type="text/javascript">
                            function showEstimate() {
                            switch (document.getElementById("cboCar").value) {
                            case "A":
                            document.getElementById("imgCar").src= "images/Accord.jpg";
                            carPrice = document.getElementById("txtEstPr").value;
                            break;
                            case "C":
                            document.getElementById("imgCar").src= "images/Civic.jpg";
                            carPrice = document.getElementById("txtEstPr").value;
                            break;
                            }  // end of switch block. 
                            //here, the UI has done processing cars pics 
                            //display the price for cars
                            document.getElementById("txtEstPr").value=  "$" + carPrice;
                             // end of the function named



                            {
                               var vchkSt= (300.99).toFixed();
                               var vchkLe= (750.99).toFixed();
                               var vchkGps= (1600.00).toFixed();
                               var tTotal = 0;
                               carPrice = Number(document.getElementById("txtBasePr").value);


                                if (document.getElementById("chkSt").checked)
                                tTotal +=  parseFloat(carPrice) + parseFloat(vchkSt);

                                if (document.getElementById("chkLe").checked )
                                tTotal +=  parseFloat(carPrice) + parseFloat(vchkLe);

                                if (document.getElementById("chkGps").checked ==true )
                                tTotal +=  parseFloat(carPrice) + parseFloat(vchkGps);


                                //displaying the total
                                document.getElementById("txtEstPr").value = "$" + tTotal;
                                }   
                                 }   // end of function showEstimate

                                </script>

1 个答案:

答案 0 :(得分:3)

您没有调用toFixed功能,而是将功能分配给chkStchkLechkGps

var chkSt= (300.99).toFixed;
var chkLe= (750.99).toFixed;
var chkGps= (1600.00).toFixed;

相反它应该是:

var chkSt= (300.99).toFixed();
var chkLe= (750.99).toFixed();
var chkGps= (1600.00).toFixed();

另外

Number(carPrice = document.getElementById("txtEstPr").value);

没有任何意义。无需在Number函数中包含赋值。看起来您正在尝试将值作为数字分配给carPrice,这可以简单地完成:

carPrice = +document.getElementById("txtEstPr").value;

carPrice = Number(document.getElementById("txtEstPr").value);

此外,您将为每个后续复选框重新分配tTotal。您应该使用:

if (document.getElementById("chkSt").checked) {
    tTotal +=  parseFloat(carPrice) + parseFloat(chkSt);
    //     ^
}

使用var tTotal = 0初始化变量。