输出中未定义/ NaN错误

时间:2015-10-16 18:55:30

标签: javascript undefined nan numerical

这是我在stackoverflow上的第一篇文章,我遇到以下代码中的错误,在firefox中的inspect element / JS控制台中没有显示错误,但由于某种原因,计算后的输出显示undefined / NaN错误。来自用户的输入在Float中解析。

代码:

function costtoShip(){

    // get input 

    var weight = parseFloat(document.getElementById("weight")).value ;
    var msg;
    var cost;
    var subtotal;

    // calculation

    if ( weight >= 0.00 && weight <= 150.00 ) {
        cost = 20.00;
    }

    else if ( weight >= 151.00 && weight <= 300.00 ) {
        cost = 15.00;
    }

    else if ( weight >= 301.00 && weight <= 400.00 ) {
        cost = 10.00;
    }    


   subtotal = weight * cost ;
   msg = "<div> Total Weight is " + weight + "</div>" ;
   msg = msg + "<div> Subtotal is " + subtotal + "</div>" ;


   // send output

    document.getElementById("results").innerHTML = msg ;
}

4 个答案:

答案 0 :(得分:7)

var weight = parseFloat(document.getElementById("weight")).value;

这不是parseFloat的方法。你试图在双人座上调用value属性。移出括号。

var weight = parseFloat(document.getElementById("weight").value);

我建议您在代码周围使用console.log(weight);或其他值,以便更轻松地指出这些问题。

答案 1 :(得分:4)

parseFloat(document.getElementById("weight").value)

应该是

var weight = parseFloat(document.getElementById("weight").value);

通过练习,你会开始关注这样的事情。在此之前,请使用alert()语句将代码撒在这类内容中。只要记得在你完成后将它们拿出来。请记住,在NaN上进行数学运算不是错误,因此没有错误消息。

答案 2 :(得分:3)

您过早关闭了代码第一行的括号。它应该是这样的:

public ActionResult Search() { return View(); }

Javascript无法将DOM元素解析为float。 ;)

答案 3 :(得分:1)

如果weight值不符合任何指定条件,则cost变量将不会被初始化,使用undefined的任何计算都将导致undefined