2011-03-02 51 views
0

我的JavaScript有什么问题?我的JavaScript有什么问题?它不会计算并显示我想要的值;它让我疯狂!

<?xml version = "1.0" encoding ="utf-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1 /DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 

... 

<body> 
    <p> 
    <a href="http://nova.umuc.edu/~ct386a28/handson/index.html">Main Page</a> 
</p> 
<h1>GAS MILEAGE CALCULATOR</h1> 

<form action="" method="post"> 

<script type = "text/javascript"> 

function mileageCalculator (beginMil, endMil, galCons, form) 
{ 

    var bM = parseFloat(beginMil); 
    var eM = parseFloat(endMil); 
    var gC = parseFloat(galCons); 

    if((eM<0)||(bM<0)||(gC<0)) 
    { 
     alert("ERROR: One or more input(s) is negative."); 
     form.begMileage = " "; 
     form.endMileage = " "; 
     form.galConsumed = " "; 
    } 

    else if ((eM == 0) || (gC == 0)) 
    { 
     alert("ERROR: The end mileage and/or gallon input is zero."); 
     form.begMileage = " "; 
     form.endMileage = " "; 
     form.galConsumed = " ";    
    } 

    else if (eM < bM) 
    { 
     alert("ERROR: End mileage is less than begining mileage."); 
     form.begMileage = " "; 
     form.endMileage = " "; 
     form.galConsumed = " "; 
    } 
    else 
    {        
     form.mpg.value = ((bM - eM)/gC); 

    } 
} 

</script> 



    <div class = "center">    
     <h3>Enter beginning mileage:</h3> 
     <input type="text" name ="begMileage" tabindex="1" /> 
     <br /> 
     <h3>Enter ending mileage:</h3> 
     <input type="text" name ="endMileage" tabindex="2" /> 
     <br /> 
     <h3>Enter gallons consumed:</h3> 
     <input type="text" name ="galConsumed" tabindex="3" /> 
     <br /> 

     <h2>TOTAL MILES PER GALLON</h2> 
     <input type="text" name ="mpg" tabindex="4" /> <br /> 

    </div> 

    <p><br /></p> 

    <p>   
    <br /><input type="submit" value="SUBMIT" onclick = "mileageCalculator"/> <input type="reset" value="CLEAR"/> <br /> 
    </p> 

</form> 

回答

3

你不能只是提交表单的功能。您必须使用某种DOM方法获取表单字段值并将其传递到您的函数中。反之亦然,您必须访问您要输出到的表单字段并设置值。

即使这有点过时,这很好地遵循你的模式。

http://www.javaworld.com/jw-06-1996/jw-06-javascript.html

+0

Woooooooooooooooooooooow。我很特别。修正了它(我刚接触JavaScript :)
Mike 2011-03-02 02:22:30

+0

因此,任何想法,为什么当我计算MPG它只显示一秒然后消失? var total =((eM-bM)/ gC); form.mpg.value = total.toFixed(2); – Mike 2011-03-02 02:23:56

+0

因为您很可能会回复到页面。你将不得不从你的函数返回false。 – 2011-03-02 02:26:55

1

如前所述,你需要或者访问DOM元素的JavaScript或者将它们传递到您呼叫的功能。请参阅此代码的更新版本,以实现您正在查找的结果:Working Sample

[编辑]作为关于样式的说明,通常认为不要将您的脚本包含在HTML中间。最常见的情况是,您将在HEAD中看到它。