Coding Java Script Calculators For Your Web Site
By Stephen Bucaro
Maybe you have a Web site where your visitor would find an online calculator very
handy. Maybe you have a crafting instruction site where the visitor needs to calculate
some dimensions. Or maybe you have an investment site where the visitor needs to
calculate some money numbers. With a little Java Script code you can easily provide a
custom calculator right on your Web page.
What makes this possible is Java Script's powerful built-in eval() function. All
you have to do is provide the eval function with a mathematical expression in a string
(computerese for a sentence inside quotes) and the eval() function will convert the
string to the proper numbers and operators and return the result of the expression.
For example, the statement below returns the number 12.
eval("2 * 6");
And if the eval() function isn't powerful enough for you, Java Script also has
a built-in Math object that you can use to perform square roots, logarithms, trigonometric
functions, and much more. You could build a full-featured scientific calculator for
your Web page.
Below is a quick little basic calculator. Nothing fancy here. I'm sure you could
easily make one with more powerful features that looks much better.
The process of building a calculator requires three main steps: 1. Build an html
form; 2. Write Java Script functions to process the data from the form - basically
using the eval() function; 3. Display the results of the calculation.
The calculator above uses only two small functions, enterNumber(digit) and
calculate(operation). Two other tiny functions, clearEntry(form) and clearAll(form)
are used to clear the calculator. When you click on one of the digit buttons,
the buttons onClick event calls the enterNumber(digit) function as shown below.
<input type="button" name="7" value="7" onClick="enterNumber(this);">
function enterNumber(digit)
{
if(newNumber)
{
clearEntry(digit.form);
newNumber = false;
}
if(digit.value == "." && !decimalSet)
{
digit.form.display.value =
digit.form.display.value + digit.value;
decimalSet = true;
}
else
{
digit.form.display.value =
digit.form.display.value + digit.value;
}
}
Note the "this" keyword passed to the enterNumber(this) function. This passes
the button object to the function. Apparently each element of a form contains a
property that is a pointer to the parent form object because you can use the
button.form operator to access other elements in the form. If you didn't understand
that last sentence, don't worry - neither did I!
|