2016-06-23 12 views
2

Ich bin in Mathe nicht erstaunlich, ich muss zugeben :)JavaScript-Volumen-Rechner von Breite, Länge und Tiefe

Im Grunde muss ich einen Rechner erstellen, nimmt:

1. width 
2. length 
3. depth 

Aus diesen Eingaben, Ich muss die Antwort in m³ anzeigen.

es ein wenig komplizierter zu machen, kann ein Benutzer zwischen 5 Dropdown-Optionen wählen:

1. Centimeter 
2. Inches 
3. Feett 
4. Yards 
5. Meters 

Zum Beispiel könnte ein Benutzer etwas wie tun:

width = 10 centimeters 
length = 7 foot 
depth = 2 inches 

So war mein Gedanke um alle Benutzereingaben in Millimeter umzuwandeln, damit sie denselben Typ haben. Die Formel für ein Volumen zu finden ist:

length * height * width 

So Figur, die ich, wenn ich dies tun in Millimeter, kann ich es dann in Meter zurück konvertieren. Allerdings habe ich Probleme und bekomme nicht die richtigen Antworten aus meinem Code. Die Logik muss völlig falsch sein (Wie ich schon sagte meine Mathe nicht erstaunlich ist)

Hier ist mein Code:

<tr> 
     <td>Width</td> 
     <td><input type="text" id="width"/></td> 
     <td> 
      <select id="width-type"> 
       <option value="centimeter">Centimeter</option> 
       <option value="inches">Inches</option> 
       <option value="feet">Feet</option> 
       <option value="yards">Yards</option> 
       <option value="meters">Meters</option> 
      </select> 
     </td> 
    </tr> 
    <tr> 
     <td>Length</td> 
     <td><input type="text" id="length"/></td> 
     <td> 
      <select id="length-type"> 
       <option value="centimeter">Centimeter</option> 
       <option value="inches">Inches</option> 
       <option value="feet">Feet</option> 
       <option value="yards">Yards</option> 
       <option value="meters">Meters</option> 
      </select> 
     </td> 
    </tr> 
    <tr> 
     <td>Depth</td> 
     <td><input type="text" id="depth"/></td> 
     <td> 
      <select id="depth-type"> 
       <option value="centimeter">Centimeter</option> 
       <option value="inches">Inches</option> 
       <option value="feet">Feet</option> 
       <option value="yards">Yards</option> 
       <option value="meters">Meters</option> 
      </select> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <button id="calculate">Calculate</button> 
     </td> 
    </tr> 



<script> 
$('#calculate').click(function(){ 

//These are the amount of mm in each drop down menu type 
var array = new Array(); 
array['centimeter'] = '10'; 
array['inches']  = '25.4'; 
array['feet']  = '304.8'; 
array['yards']  = '914.4'; 
array['meters']  = '1000'; 

//Find the width in mm 
var widthVal = $('#width').val(); 
var widthType = $('#width-type').val(); 
var width  = widthVal * array[widthType]; 

//Find the length in mm 
var lengthVal = $('#length').val(); 
var lengthType = $('#length-type').val(); 
var length  = lengthVal * array[lengthType]; 

//Find the depth in mm 
var depthVal = $('#depth').val(); 
var depthType = $('#depth-type').val(); 
var depth  = depthVal * array[depthType]; 

//Find the total volume in mm 
var volumeInMillimeters = length * depth * width; 

//try to convert it back to meters 
var volume = volumeInMillimeters/1000; 
alert(volumeInMillimeters); 
alert(volume); 

}); 
</script> 

Auch hier ist eine js Geige, damit Sie es sehen arbeiten - https://jsfiddle.net/xk4r8hm2/1/

Wenn jemand mir helfen kann, dies zu tun, nicht nach einer Antwort suchen, sondern die Erklärung dafür bitte.

Danke!

+1

Sie haben auf der Startseite von jsfiddle verlinkt. –

+0

aha, mein Schlechter :). Habe es jetzt geändert – virepo

Antwort

4

Sie brauchen nur zu teilen dreimal mit 1000 d

var volume = volumeInMillimeters/(1000 * 1000 * 1000); 

Dies liegt daran, Band 3 Dimensionen hat. Wenn Sie jede Dimension mit 1000 multipliziert haben, müssen Sie sie in mm wieder zurückgeben, Sie müssen jede Dimension effektiv durch 1000 teilen oder das Endergebnis durch (1000 * 1000 * 1000) teilen.

+0

Danke, das funktioniert. Ich verstehe, warum das funktionieren würde, danke für die Erklärung! – virepo

+0

@virepo Schön zu wissen, dass es dir geholfen hat :) –

Verwandte Themen