这是我在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 ;
}
答案 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
。