Die Hauptfunktion eines Rechners besteht darin, numerische Berechnungen durchzuführen. Durch die Entwicklung einer Webinstanz der Rechnerfunktion können Sie die grundlegenden numerischen Berechnungsfunktionen von js besser beherrschen. Dieses Beispiel analysiert detailliert die Entwicklungsschritte eines JS-Rechners. Am besten verfügen Sie über grundlegende JS-Kenntnisse, wenn Sie dieses Tutorial studieren. Der Rechner besteht aus zwei Teilen: dem Zahlenanzeigebereich und dem Schaltflächenbereich. Schreiben Sie zunächst die HTML-Elemente dieser beiden Bereiche des Rechners, wie unten gezeigt: <div class="calculator_wrap" id="calculator"><!--Element für Rechner-Outsourcing--> <div class="show_num"><!--Zahlenbereich anzeigen--> <div class="num_save" id="numSave"></div><!--Berechnungsformel--> <div class="num_cur" id="numCur">0</div><!--Berechnungsergebnis--> <div class="show_m" id="showM">M</div><!--Speicherlogo--> </div> <div class="btn_wrap" id="btnWrap"><!--Schaltflächenbereich--> <div class="btn" data-key="MC">MC</div><!--Speicher löschen--> <div class="btn" data-key="MR">MR</div><!--Speicher lesen--> <div class="btn" data-key="MS">MS</div><!--Speicher--> <div class="btn" data-key="MA">M+</div><!--Speicher plus--> <div class="btn" data-key="ML">M-</div><!--Speicherreduzierung--> <div class="btn" data-key="ZURÜCK">←</div><!--Rücktaste--> <div class="btn" data-key="CE">CE</div><!--Aktuelles löschen--> <div class="btn" data-key="Löschen">C</div><!--Löschen--> <div class="btn" data-key="Negate">±</div><!--Positive und negative Konvertierung--> <div class="btn" data-key="Square">√ ̄</div><!--Quadratwurzel--> <div Klasse="btn" Datenschlüssel="Num" Datenwert="7">7</div><!--7--> <div Klasse="btn" Datenschlüssel="Num" Datenwert="8">8</div><!--8--> <div Klasse="btn" Datenschlüssel="Num" Datenwert="9">9</div><!--9--> <div class="btn" data-key="Base" data-value="/">/</div><!--Außer--> <div class="btn" data-key="Prozentsatz">%</div><!--Prozentzeichen--> <div Klasse="btn" Datenschlüssel="Num" Datenwert="4">4</div><!--4--> <div Klasse="btn" Datenschlüssel="Num" Datenwert="5">5</div><!--5--> <div Klasse="btn" Datenschlüssel="Num" Datenwert="6">6</div><!--6--> <div class="btn" data-key="Base" data-value="*">*</div><!--Multiplizieren--> <div Klasse="btn" Datenschlüssel="Reziprok">1/x</div> <!--Countdown--> <div Klasse="btn" Datenschlüssel="Anzahl" Datenwert="1">1</div><!--1--> <div Klasse="btn" Datenschlüssel="Num" Datenwert="2">2</div><!--2--> <div Klasse="btn" Datenschlüssel="Num" Datenwert="3">3</div><!--3--> <div Klasse="btn" Datenschlüssel="Basis" Datenwert="-">-</div><!--Minus--> <div class="btn gleich" data-key="Gleich">=</div><!--Gleich--> <div Klasse="btn null" Datenschlüssel="Num" Datenwert="0">0</div><!--0--> <div class="btn" data-key="Punkt">.</div><!--Dezimalpunkt--> <div Klasse="btn" Datenschlüssel="Basis" Datenwert="+">+</div><!--Hinzufügen--> </div> </div> Leser können einige Stile selbst schreiben und einen Taschenrechnereffekt entwerfen, der ihnen gefällt. Der Rechnereffekt dieses Beispiels wird in der folgenden Abbildung dargestellt: Stilcode: .calculator_wrap{width:240px;height:360px;padding:10px;margin:30px auto;border:1px solid #8acceb;background:#d1f1ff;} .calculator_wrap .show_num{position:relative;padding:0 8px;height:60px;background:#fff;text-align:right;} .calculator_wrap .show_m{position: absolute;links:10px;unten:3px;anzeige:keine;} .calculator_wrap .num_save{Höhe:26px;Zeilenhöhe:26px;Schriftgröße:12px;Weißraum:nowrap;} .calculator_wrap .num_cur{Schriftgröße:28px;Höhe:34px;Zeilenhöhe:34px;} .calculator_wrap .btn_wrap{font-size:0px;} .calculator_wrap .btn{Anzeige:Inline-Block;Breite:38px;Höhe:38px;Zeilenhöhe:38px;Textausrichtung:Mitte;Rahmen:1px durchgehend #ccc;Hintergrund:#666;Farbe:#fff;Schriftgröße:14px;Rand:10px 10px 0 0;Cursor:Zeiger;} .calculator_wrap .btn:hover{background:#333;} .calculator_wrap .btn:nth-child(5n){margin-right:0px;} .calculator_wrap .equal{position:absolute;höhe:90px;zeilenhöhe:90px;} .calculator_wrap .zero{width:90px;} Für einen Neuling können die Rechnerfunktionen mit all den vielen Schaltflächen und verschiedenen Berechnungsmethoden kompliziert erscheinen, sodass er möglicherweise nicht weiß, wo er anfangen soll. Tatsächlich müssen Sie für jede Funktion nur Ihre Ideen ordnen und Schritt für Schritt Code schreiben, und Sie werden feststellen, dass die Implementierung nicht schwierig ist. 1 Holen Sie sich jedes HTML-ElementUnabhängig davon, was das Web-Frontend auf der Seite tun möchte, muss es zuerst die DOM-Elemente auf der Seite abrufen. Es scheint, dass der gesamte Rechner viele Schaltflächen hat. Bei der tatsächlichen Entwicklung kann die Ereignisdelegierung zum Bedienen der Schaltflächen verwendet werden, sodass nur das Containerelement aller Schaltflächen abgerufen werden muss. Der Code lautet wie folgt: //Ausgelagertes Element abrufen var eCalculator = document.getElementById('calculator'); //Berechnungsdaten (Formel) speichern Container var eNumSave = document.getElementById('numSave'); //Aktueller digitaler Container var eNumCur = document.getElementById('numCur'); //Externer Button-Container, wird für Ereignisproxy verwendet var eBtnWrap = document.getElementById('btnWrap'); //Speicherspeicher-Flag-Element var eShowM = document.getElementById('showM'); 2 Deklarieren Sie verwandte VariablenWährend des Berechnungsprozesses werden einige Variablen benötigt, um die Berechnung zu unterstützen, Ergebnisse zu speichern und Beurteilungen vorzunehmen, wie unten gezeigt: //Berechnungsformel var sStep = ''; //Aktuelle Nummer var sCurValue = '0'; //Berechnungsergebnis var nResult = null; //Operator var sMark = ''; //MR-Speicherspeicherdaten var nMvalue = 0; //Eingabestatus. false: Geben Sie eine Zahl ein, die die ursprüngliche Zahl ersetzen soll; true: Geben Sie eine Zahl ein, die zur ursprünglichen Zahl hinzugefügt werden soll; var bLogStatus = false; 3. Klickereignisse zu Schaltflächen hinzufügenDa der gesamte Rechner über viele Tasten verfügt, wäre es zu viel Aufwand und mühselig, jeder Taste einzeln ein Ereignis zuzuordnen. Dies würde die Leistung beeinträchtigen und zu Fehlern führen. Daher haben wir gerade nur den externen Container eCalculator der Schaltfläche erhalten. Bei der Ereignisdelegierung müssen Sie dem Container lediglich ein Klickereignis hinzufügen, ermitteln, auf welche Schaltfläche aktuell geklickt wird, und dann die entsprechende Berechnung durchführen. Wenn Sie mit der Maus auf eine Schaltfläche klicken, wählen Sie möglicherweise den Text auf der Schaltfläche aus, weil Sie zu schnell klicken. Daher müssen Sie dem äußeren Container auch eine Operation hinzufügen, um das Standardverhalten zu verhindern. Der Code lautet wie folgt: //Outsourcing-Container fügt Mouse-Down-Ereignis hinzu, um zu verhindern, dass Text ausgewählt wird eCalculator.addEventListener('mousedown',function(event){ //Verhindern Sie das Standardverhalten beim Drücken der Maus, um zu verhindern, dass der Text ausgewählt wird, wenn die Schaltfläche zu schnell angeklickt wird. event.preventDefault(); }); //Der Button-Container fügt ein Klickereignis hinzu, um alle Button-Operationen zu proxyen eBtnWrap.addEventListener('click',function(event){ }); 3.1 Holen Sie sich den angeklickten Button und den Wert Das mit der Maus angeklickte Element kann über den an die Ereignisfunktion übergebenen Ereignisparameter abgerufen werden. Verwenden Sie dann die Datenschlüssel- und Datenwertattribute des Elements, um zu bestimmen, auf welche Schaltfläche mit der Maus geklickt wurde und welchen Wert dieser Wert hat, wie unten gezeigt: eBtnWrap.addEventListener('klicken',Funktion(Ereignis){ //Das angeklickte Element abrufen var eTarget = event.target; //Beurteilen Sie die gedrückte Taste var key = eTarget.dataset.key; //Den gedrückten Wert abrufen var value = eTarget.dataset.value; }); 3.2 Bestimmen Sie den Schlüssel und den Wert und führen Sie Eingabeoperationen mit Zifferntasten und Dezimalpunkten durch Wenn das Tastenattribut data-key „Num“ lautet, bedeutet dies, dass eine Zahl gedrückt wurde, und „Point“ bedeutet ein Dezimalpunkt. Diese Tasten werden alle zur Ausführung von Eingaben verwendet. Da es mehrere Zahlen gibt, wird die Zahleneingabe in der Funktion fnInputNum gekapselt. Kapseln Sie dann die Funktion fnShowResult, um die Daten im digitalen Anzeigebereich anzuzeigen. Wie unten dargestellt: eBtnWrap.addEventListener('klicken',Funktion(Ereignis){ /* … */ //Feststellen, ob die Schaltfläche angeklickt wurde if(key){ //Verwende die switch-Anweisung, um die entsprechende Operation verschiedener Tasten zu bestimmen switch(key){ //Zifferntasten zum Ausführen von Operationen, Fall „Num“: fnInputNum(Wert); brechen; //Dezimalpunktoperation im Fall 'Punkt': //Beurteilen Sie, ob ein Dezimalpunkt vorhanden ist, um die Eingabe auf nur einen Dezimalpunkt zu beschränken, if(sCurValue.indexOf('.')==-1){ sAktueller Wert = sAktueller Wert + '.'; bLogStatus = wahr; } brechen; } //Daten im Anzeigenummernbereich anzeigen fnShowResult(); } }); //Zahleneingabefunktion fnInputNum(num){ //Bestimmen Sie, ob die aktuelle Nummer ersetzt oder der aktuellen Nummer hinzugefügt werden soll, basierend auf dem Eingabestatus, wenn (bLogStatus) { sAktuellerWert = sAktuellerWert + Num; }anders{ //Beschränken Sie die erste Zahl auf einen Wert ungleich 0 wenn(num!=0){ bLogStatus = wahr; } sAktueller Wert = Zahl; } } //Berechnungsergebnisse anzeigen Funktion fnShowResult(){ //Berechnungsformel anzeigen eNumSave.innerHTML = sStep; //Begrenzen Sie die Gesamtlänge der Zahlen if(sCurValue.length>14){ sAktuellerWert = sAktuellerWert.slice(0,14); } //Aktuelle Nummer anzeigen eNumCur.innerHTML = sCurValue; } An dieser Stelle können Sie auf Zahlen und Dezimalstellen klicken, um sie auf dem Rechnerdisplay einzugeben, wie in der Abbildung gezeigt: 3.3 Addition, Subtraktion, Multiplikation und Division Die grundlegendsten Operationen eines Taschenrechners sind Addition, Subtraktion, Multiplikation und Division. Um die Funktionen zum Addieren, Subtrahieren, Multiplizieren und Dividieren von Zahlen sowie zum Berechnen der Ergebnisse zu implementieren, werden die drei Funktionen fnCountResult, fnBaseCount und fnEqual gekapselt. fnCountResult wird verwendet, um das Ergebnis gemäß dem Operator zu berechnen; fnBaseCount ändert die Berechnungsformel oder das Berechnungsergebnis; fnEqual wird verwendet, um das Ergebnis zu berechnen und die Daten zurückzusetzen, wenn das =-Zeichen gedrückt wird. Wie unten dargestellt: eBtnWrap.addEventListener('klicken',Funktion(Ereignis){ /* … */ //Feststellen, ob die Schaltfläche angeklickt wurde if(key){ //Verwende die switch-Anweisung, um die entsprechende Operation verschiedener Tasten zu bestimmen switch(key){ /* … */ //Grundrechenarten Addition, Subtraktion, Multiplikation und Division im Fall „Basis“: fnBaseCount(Wert); brechen; // Fall 'Gleich': fnEqual(); brechen; } //Daten im Anzeigenummernbereich anzeigen fnShowResult(); } }); //Berechnungsergebnis Funktion fnCountResult(){ //Beurteile den aktuellen Operator und führe die Operation switch(sMark) aus{ Fall '+': nResult = nResult===null?+sAktuellerWert:nResult + (+sAktuellerWert); brechen; Fall '-': nResult = nResult===null?+sAktuellerWert:nResult - sAktuellerWert; brechen; Fall '*': nResult = nResult===null?+sAktuellerWert:nResult * sAktuellerWert; brechen; Fall '/': nResult = nResult===null?+sAktuellerWert:nResult / sAktuellerWert; brechen; Standard: nErgebnis = +sAktuellerWert; } } //Grundlegende Operationen der Addition, Subtraktion, Multiplikation und Division Funktion fnBaseCount(Schlüssel){ //Wenn es sich um einen Eingabestatus handelt, führen Sie die Berechnung durch, wenn (bLogStatus) { //Eingabestatus ändern bLogStatus = false; //Berechnungsformel sStep = sStep + ' ' + sCurValue + ' ' + key; //Berechnungsergebnisse fnCountResult(); sAktueller Wert = ''+nErgebnis; }anders{ //Wenn die Formel leer ist, addiere zuerst die ursprüngliche Zahl if(sStep==''){ sStep = sAktueller Wert + ' ' + Schlüssel; }else{ //Wenn eine Formel vorhanden ist, ändere den letzten Operator sStep = sStep.slice(0,sStep.length-1) + ' ' + key; } } //Ändern Sie den zu berechnenden Operator sMark = key; } //Gleich der Funktion fnEqual(){ //Wenn kein Operator vorhanden ist, nachfolgende Operationen verhindern if(sMark=='')return; //Berechnungsergebnisse fnCountResult(); sAktuellerWert = ''+nErgebnis; //Daten zurücksetzen sStep = ''; sMark = ''; bLogStatus = falsch; } Jetzt können Sie auf dem Rechner Addition, Subtraktion, Multiplikation und Division durchführen, wie in der Abbildung gezeigt: 3.4 Fügen Sie anderen Schaltflächen Operationen hinzu. Der Code lautet wie folgt: eBtnWrap.addEventListener('klicken',Funktion(Ereignis){ /* … */ //Feststellen, ob die Schaltfläche angeklickt wurde if(key){ //Verwende die switch-Anweisung, um die entsprechende Operation verschiedener Tasten zu bestimmen switch(key){ /* … */ // Klarer Fall 'Clear': fnLöschen() brechen; //Rücktaste im Fall „BACK“: fnZurück(); brechen; //CE Fall 'CE': // Den aktuell angezeigten Wert löschen sCurValue = '0'; bLogStatus = falsch; brechen; //Negieren Fall 'Negate': //Aktueller Wert invertiert sCurValue = ''+(-sCurValue); brechen; // Nehmen wir den Fall „Quadrat“ als Quadratwurzel: //Ziehen Sie die Quadratwurzel des aktuellen Werts nResult = Math.sqrt(+sCurValue); //Initialisierung anderer Daten sCurValue = ''+nResult; sSchritt = ''; sMark = ''; bLogStatus = falsch; brechen; //Countdown-Fall „Reziprok“: //Holen Sie sich den Kehrwert des aktuellen Werts //Initialisierung weiterer Daten nResult = 1/sCurValue; sAktuellerWert = ''+nErgebnis; sSchritt = ''; sMark = ''; bLogStatus = falsch; brechen; //M-Serienfall 'MC': // Speicherwert löschen nMvalue = 0; fnShowM() brechen; Fall 'MR': //Speicherwert anzeigen sCurValue = '' + nMvalue; fnShowM() brechen; Fall 'MS': //Ändere den Speicherwert auf den aktuellen Wert nMvalue = +sCurValue; fnShowM() brechen; Fall 'MA': //Den aktuellen Wert zum Speicherwert hinzufügen nMvalue += +sCurValue; fnShowM() brechen; Fall 'ML': //Subtrahieren Sie den aktuellen Wert nMvalue -= +sCurValue vom Speicherwert; fnShowM() brechen; } //Daten im Anzeigenummernbereich anzeigen fnShowResult(); } }); //Funktion löschen fnClear(){ //Alle Daten initialisieren sStep = ''; sAktueller Wert = '0'; nErgebnis = null; sMark = ''; bLogStatus = falsch; } //Rücktaste-Funktion fnBack(){ //Sie müssen sich im Eingabemodus befinden, um die Rücktaste zu drücken, if (bLogStatus) { //Subtrahiere die letzte Ziffer des Wertes sCurValue = sCurValue.slice(0,sCurValue.length-1); //Wenn der letzte Wert leer oder negativ (-) ist, ändere ihn auf 0, setze den Eingabestatus auf „false“ zurück und es ist keine Rücktaste zulässig, wenn (sCurValue==''||sCurValue=='-'){ sAktueller Wert = '0'; bLogStatus = falsch; } } } //Beurteilen, ob M-Speicher vorhanden ist Funktion fnShowM(){ bLogStatus = falsch; //Beurteilen, ob die Speichermarkierung angezeigt werden soll eShowM.style.display = nMvalue==0?'none':'block'; } 4 Tastaturereignisse bindenNachdem Sie dies geschrieben haben, können Sie den Rechner normal verwenden. Allerdings ist es nicht effizient, einfach mit der Maus auf die Schaltflächen zu klicken. Um den Rechner schneller zu nutzen, müssen Sie auch Tastaturereignisse hinzufügen. Wenn die entsprechende Schaltfläche gedrückt wird, wird der Vorgang wie unten gezeigt ausgeführt: //Tastaturereignis document.addEventListener('keyup',function(event){ //Aktuelle Tastaturtaste abrufen var key = event.key; //Holen Sie sich den Schlüsselcode var Code = Ereignis.Schlüsselcode; //Begrenzen Sie die Anzahl der korrekten Tastenanschläge zum Ändern der angezeigten Daten. var compliant = false; //Nummer eingebenwenn((code>=48&&code<=57)||(code>=96&&code<=105)){ fnInputNum(Taste); entsprechen = wahr; } //Addition, Subtraktion, Multiplikation und Divisionwenn(Schlüssel=='*'||Schlüssel=='+'||Schlüssel=='/'||Schlüssel=='-'){ fnBaseCount(Schlüssel); entsprechen = wahr; } //Esc-Tasteif(code==27){ fnLöschen(); entsprechen = wahr; } //Taste eingebenif(code==13){ fnEqual(); entsprechen = wahr; } //Rücktasteif(code==8){ fnZurück(); entsprechen = wahr; } wenn(entsprechen){ //Daten auf dem Taschenrechner-Bildschirm anzeigen fnShowResult(); } }); Ein einfacher Rechner ist nun fertig. Wenn der Zweck darin besteht, zu lernen, wird empfohlen, den Code nicht direkt zu kopieren. Am besten geben Sie den Code und die Kommentare manuell ein, um den Eindruck zu vertiefen und den Lerneffekt zu verbessern. ZusammenfassenDies ist das Ende dieses Artikels über die Verwendung von nativem JavaScript zur Entwicklung eines Taschenrechners. Weitere relevante Inhalte zur Entwicklung eines Taschenrechners mit nativem JavaScript finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
>>: So erstellen Sie ein CentOS-Basisimage
Heute Morgen hatte ich vor, mit Wampserver eine P...
1. Wie installiert man? 1. [Ausführen] -> [cmd...
Das Installationstutorial für MySQL 5.7.19 Winx64...
1. MySQL entfernen a. sudo apt-get autoremove --p...
Ab diesem Abschnitt erklären wir das Implementier...
Einführung Der Dockerfile-Build-Ausführungsvorgan...
Bei der Installation von Nginx, MySQL, Tomcat und...
Nachdem die Tabellenbreite auf der Seite auf width...
Heute bin ich beim Entwickeln auf eine Methode ge...
Inhaltsverzeichnis Überblick Globale Hook-Funktio...
Lösung für das Problem, dass das Ubuntu-Dualsyste...
Frage Die feste CSS-Positionierung position:fixed...
In diesem Artikel wird der spezifische Code von T...
In diesem Artikelbeispiel wird der spezifische JS...