HTML, Excel, Word, SEOÎñíîâû JavaScript ⇒ Ïðèìåð ïðîñòîãî êàëüêóëÿòîðà

ÎÑÍÎÂÛ JavaScript

Ó÷åáíèê JavaScript
·Çíàêîìñòâî ñ JS. Ïåðåìåííûå, îïåðàòîðû, îïåðàöèè
·Ôóíêöèè
·Ìîäåëü HTML äîêóìåíòà
·Èåðàðõèÿ äîêóìåíòîâ â áðàçóåðå
·Ôîðìû
·Îêíà è ôðåéìû
·Ññûëêè, çàãîëîâîê, ñòàòóñ
·Ñîáûòèÿ
·Ñîáûòèÿ êëàâèàòóðû è ìûøè
·Ñîáûòèÿ. Òàéìåð
·Ñòèëè. Óïðàâëåíèå ñòèëÿìè
·Ñëîè è áëîêè. Óïðàâëåíèå âèäèìîñòüþ
·Îáúåêòû JS
·Âíåøíèå îáúåêòû
·Âíóòðåííèå îáúåêòû
·Ìàññèâû
·Ðåãóëÿðíûå âûðàæåíèÿ
·Ìàòåìàòèêà â JS
·Ïðèìåð ïðîñòîãî êàëüêóëÿòîðà
·Äàòà è âðåìÿ
·Cookies è õðàíåíèå ñîñòîÿíèÿ
·Íåìíîãî îá AJAX
·Ðàáîòà ñ WebMoney



Ïðèìåð ïðîñòîãî êàëüêóëÿòîðà


Àâòîð: Àðòåìüåâ Ñåðãåé Èãîðåâè÷ ICQ: 438856621 email: _spin_@bk.ru

Çà÷àñòóþ, íà ñàéòàõ âîçíèêàåò íåîáõîäèìîñòü äîáàâëåíèÿ íà ñòðàíèöó ïðîñòîãî êàëüêóëÿòîðà.  ñåòè Èíòåðíåò âû ïðè æåëàíèè ñìîæåòå íàéòè ðàçëè÷íûå ïðèìåðû: êðåäèòíûé êàëüêóëÿòîð, êàëüêóëÿòîð ñêèäîê è ò.ä. Âñå îíè ðàáîòàþò ïî îäíîìó ïðèíöèïó, îòëè÷àþòñÿ ëèøü èíòåðôåéñîì è ïîðÿäêîì âû÷èñëåíèé ðåçóëüòàòà.

 ýòîì ïðèìåðå ìû ðàññìîòðèì ïðîöåññ ñîçäàíèÿ ïðîñòîãî êàëüêóëÿòîðà, êîòîðûé ïðè íåîáõîäèìîñòè ìîæíî ëåãêî ïåðåäåëàòü ïîä âàøè íóæäû.

Äëÿ íà÷àëà ñîçäàäèì HTML-êîä äëÿ íàøåãî êàëüêóëÿòîðà:

<style type="text/css">
   	.tblCalc{
 		border:1px solid gray;
 		margin:0;
 		padding:0;
 		width:250px;
 		text-align:center;
 	}
 	.tblCalc input{
 		border:1px solid gray;
 		width:30px;
 		margin:4px;
 	}
	 	#btnWide{
 		width:80px;
 	}
 	#editWide{
 		width:250px;
 	}
</style>


<form name="calc" action="">
     <table class="tblCalc" cellpadding=0 cellspacing=0>
     <tr>
         <td colspan=5 align=middle>
         	<input id="editWide" name="ReadOut" type="Text"
              	size=28 value="0" width="250px">
         </td>
     </tr>
     <tr>
         <td colspan="3"></td>
         <td><input name="btnClear" type="Button"
          	value="C" onclick="Clear()" /></td>
         <td><input name="btnClearEntry" type="Button"
          	value="CE" onclick="ClearEntry()" /></td>
     </tr>
     <tr>
         <td><input name="btnSeven" type="Button"
          	value="7" onclick="NumPressed(7)"></td>
         <td><input name="btnEight" type="Button"
          	value="8" onclick="NumPressed(8)"></td>
         <td><input name="btnNine" type="Button"
          	value="9" onclick="NumPressed(9)"></td>
         <td><input name="btnPlus" type="Button"
          	value="+" onclick="Operation('+')" /></td>
         <td><input name="btnMultiply" type="Button"
          	value="*" onclick="Operation('*')" /></td>
       </tr>
     <tr>
         <td><input name="btnFour" type="Button"
          	value="4" onclick="NumPressed(4)"></td>
         <td><input name="btnFive" type="Button"
          	value="5" onclick="NumPressed(5)"></td>
         <td><input name="btnSix" type="Button"
          	value="6" onclick="NumPressed(6)"></td>
         <td><input name="btnMinus" type="Button"
          	value="-" onclick="Operation('-')" /></td>
         <td align=middle><input name="btnDivide" type="Button"
          	value=" / " onclick="Operation('/')" /></td>
     </tr>
     <tr>
         <td><input name="btnOne" type="Button"
          	value="1" onclick="NumPressed(1)"></td>
         <td><input name="btnTwo" type="Button"
          	value="2" onclick="NumPressed(2)"></td>
         <td><input name="btnThree" type="Button"
          	value="3" onclick="NumPressed(3)"></td>
         <td><input name="btnPercent" type="Button"
          	value="%" onclick="Percent()" /></td>
         <td align=middle>&nbsp;</td>
     </tr>
     <tr>
         <td><input name="btnZero" type="Button"
          	value="0" onclick="NumPressed(0)"></td>
         <td><input name="btnDecimal" type="Button"
          	value="." onclick="Decimal()"></td>
         <td><input name="btnNeg" type="button"
          	value="+/-" onclick="Neg()" /></td>
         <td colspan="2"><input id="btnWide" name="btnEquals"
          	type="Button" value="=" onclick="Operation('=')"></td>
     </tr>
     </table>
</form>





Ïîëó÷èì ñëåäóþùèé âèä:

 

Ïðè íàæàòèè íà ëþáóþ êíîïêó ñêîðåå âñåãî ïîÿâèòñÿ îøèáêà, ò.ê. ìû åù¸ íå íàïèñàëè êîä ñîîòâåòñòâóþùèõ îáðàáîò÷èêîâ. Ñëåäóþùèé ñêðèïò íóæíî äîáàâèòü â ëþáîì ìåñòå ñòðàíèöû:


<script language="JavaScript">
var Fcalc = document.calc;
var Currents = 0;
var FlagNewNum = false;
var PendingOp = "";
// îáðàáîò÷èê íàæàòèÿ // öèôðîâîé êíîïêè function NumPressed (Num)
{
if (FlagNewNum)
{
Fcalc.ReadOut.value = Num;
FlagNewNum = false;
}
else
{
if (Fcalc.ReadOut.value == "0")
Fcalc.ReadOut.value = Num;
else
Fcalc.ReadOut.value += Num;
}
}
// îáðàáîò÷èê íàæàòèÿ // êíîïêè äåéñòâèÿ
function Operation (Op)
{
var Readout = Fcalc.ReadOut.value;
if (FlagNewNum && PendingOp != "=") { Fcalc.ReadOut.value = Currents; }
else
{
FlagNewNum = true;
if ( '+' == PendingOp )
Currents += parseFloat(Readout);
else if ( '-' == PendingOp )
Currents -= parseFloat(Readout);
else if ( '/' == PendingOp )
Currents /= parseFloat(Readout);
else if ( '*' == PendingOp )
Currents *= parseFloat(Readout);
else
Currents = parseFloat(Readout);
Fcalc.ReadOut.value = Currents;
PendingOp = Op;
}
}
// äîáàâëåíèå äåñÿòè÷íîé òî÷êè ñ ÷èñëó
function Decimal ()
{
var curReadOut = Fcalc.ReadOut.value;
if (FlagNewNum)
{
curReadOut = "0.";
FlagNewNum = false;
}
else
{
if (curReadOut.indexOf(".") == -1)
curReadOut += ".";
}
Fcalc.ReadOut.value = curReadOut;
}
// Î÷èñòêà òåêóùåãî ðåçóëüòàòà
function ClearEntry ()
{
Fcalc.ReadOut.value = "0";
FlagNewNum = true;
}
// Ïîëíàÿ î÷èñòêà âñåõ ðåçóëüòàòîâ
function Clear ()
{
Currents = 0;
PendingOp = "";
ClearEntry();
}
// ìåíÿåì çíàê òåêóùåãî ðåçóëüòàòà
function Neg ()
{
Fcalc.ReadOut.value =
parseFloat(Fcalc.ReadOut.value) * -1;
}
// âû÷èñëÿåì çíà÷åíèå ïðîöåíòîâ
function Percent ()
{ Fcalc.ReadOut.value =
(parseFloat(Fcalc.ReadOut.value) / 100) *
parseFloat(Currents);
}
</script>

Ñêðèïò äîñòàòî÷íî ëîãè÷åí è ïðîñò äëÿ ïîíèìàíèÿ, ñòîèò ëèøü íåìíîãî â í¸ì ðàçîáðàòüñÿ. Çäåñü èñïîëüçîâàíà ôîðìà è ýëåìåíòû ââîäà òèïà "text" è "button", ïðè÷åì ê ïîñëåäíèì ïðèâÿçàíû íàøè ñîáñòâåííûå îáðàáîò÷èêè.

Äëÿ òðåíèðîâêè ïîïðîáóéòå äîáàâèòü â ýòîò êàëüêóëÿòîð èíæåíåðíûå ôóíêöèè, íàïðèìåð, âû÷èñëåíèå êâàäðàòíîãî êîðíÿ è âîçâåäåíèå â ñòåïåíü. Ïîäñêàçêà: íåîáõîäèìî áóäåò äîáàâèòü ñîîòâåòñòâóþùèå êíîïêè è âíåñòè èçìåíåíèÿ â ôóíêöèþ Operation().



 íà÷àëî ñòðàíèöû



 íà÷àëî ñòðàíèöû