Notes and Code |
Outcome |
HTML
The structure of the page is laid out in the HTML code.
-
Input Elements: (Lines 18-22)
radius: <input type="number" id="r" value="1"><br>
height: <input type="number" id="h" value="1">
<p>
Units: <input type="text" id="units" value="cm">
</p>
</div>
Radius and height are entered as "number" types so when your javascript gets these values they'll already be numbers and not strings (text).
-
An Element for Output (Line 28)
Volume = <span id="volume" class="outputValue"></span>
The span element with the id outputValue is set as a placeholder for the JavaScript code to put the results of the calculations.
|
cylinder.html
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Cylinders</title>
<link href="cylinder.css" rel="stylesheet" />
</head>
<body>
<h1>Geometry of Cylinders</h1>
<p>
In order to calculate the volume and surface area of a cylinder, you will need to enter its <b>radius</b> and its <b>height:</b>
</p>
<div id="inputs">
<h2>Inputs</h2>
radius: <input type="number" id="r" value="1"><br>
height: <input type="number" id="h" value="1">
<p>
Units: <input type="text" id="units" value="cm">
</p>
</div>
<div id="outputs">
<h2>Output</h2>
Volume = <span id="volume" class="outputValue"></span>
</div>
</body>
<script type="text/javascript" src='cylinder.js'>
</script>
</html>
|
JavaScript
Javascript does the actual calculations. It gets the values input from the page, does the calculations, and outputs the results to the page.
-
volCylinder function: (Line 2):
function volCylinder(){
Create function that recieves no parameters (it will read the radius and height from the input elements on the webpage).
-
Get radius (r), height (h), and units (u) from webpage :
let r = document.getElementById("r").value;
let h = document.getElementById("h").value;
let u = document.getElementById("units").value;
Get values from elements with the given id's.
-
Calculate volume (Line 9):
let vol = Math.PI * r**2 * h;
Javascript has some built in constants like Math.PI
-
Output result to webpage (Line 12-14):
Get the webpage element where the output is going to go:
let vOut = document.getElementById("volume");
We've already calculated the volume (see above) but now we'll set up the units as whatever input units there were cubed:
vUnits = " " + u + "3";
Place the volume calculated (vol), and the units (vUnits) into the output element (vOut) using the innerHTML attribute.
vOut.innerHTML = vol + vUnits;
|
cylinder.js
// Function to calculate the volume of a cylinder
function volCylinder(){
// Get input from webpage
let r = document.getElementById("r").value;
let h = document.getElementById("h").value;
let u = document.getElementById("units").value;
// do calculations
let vol = Math.PI * r**2 * h;
// output to webage
let vOut = document.getElementById("volume");
vUnits = " " + u + "3";
vOut.innerHTML = vol + vUnits;
}
// call function/s when page loads
volCylinder();
// add event listeners to run function whenever a change
// is made to one of the inputs
rInput = document.getElementById("r");
rInput.addEventListener("change", volCylinder);
hInput = document.getElementById("h");
hInput.addEventListener("change", volCylinder);
uInput = document.getElementById("units");
uInput.addEventListener("input", volCylinder);
|
CSS
Styles the page to make it look pretty.
|
cylinder.css
body {
background-color: khaki;
}
h1 {
font-family: "Times New Roman", Times, serif;
color: blue;
padding-left: 2em;
}
input[type="number"]{
width: 5em;
text-align: center;
}
#inputs {
border: 1px solid black;
width: 50%;
}
.outputValue {
background-color: lightgreen;
border: 4px inset green;
padding: 5px;
}
|
Test: A Class in Javascript
Using a class for cylinders. (in progress).
Creating the Class
// a class to deal with cylinders
class cylinder{
constructor(r, h) {
this.r = r;
this.h = h;
}
// method for calculating the volume of the cylinder
volume(){
let v = Math.PI * this.r**2 * this.h;
return v;
}
}
-
The class requires you to pass two variables, r and h. You can see this in the class'
constructor .
-
This class has one method (
volume ) that calculates and returns the volume of the cylinder.
Using the Class
An instance of the class is created using the new keyword.
// do CALCULATIONS USING THE CYLINDER CLASS
let c = new cylinder(r, h);
let vol = c.volume()
|
cylinderClass.js
// a class to deal with cylinders
class cylinder{
constructor(r, h) {
this.r = r;
this.h = h;
}
// method for calculating the volume of the cylinder
volume(){
let v = Math.PI * this.r**2 * this.h;
return v;
}
}
// Function to calculate the volume of a cylinder
function volCylinder(){
// Get input from webpage
let r = document.getElementById("r").value;
let h = document.getElementById("h").value;
let u = document.getElementById("units").value;
// do CALCULATIONS USING THE CYLINDER CLASS
let c = new cylinder(r, h);
let vol = c.volume()
// output to webage
let vOut = document.getElementById("volume");
vUnits = " " + u + "3";
vOut.innerHTML = vol + vUnits;
}
// call function/s when page loads
volCylinder();
// add event listeners to run function whenever a change
// is made to one of the inputs
rInput = document.getElementById("r");
rInput.addEventListener("change", volCylinder);
hInput = document.getElementById("h");
hInput.addEventListener("change", volCylinder);
uInput = document.getElementById("units");
uInput.addEventListener("input", volCylinder);
|