HintergrundDa ich einem neuen Projektteam zugewiesen wurde, muss das Projekt JS verwenden, da ich noch nie damit in Berührung gekommen bin. Der Leiter gibt mir also eine Woche Zeit, um es zu lernen. Ja, die Implementierung eines einfachen Rechners, der vier gemischte Operationen unterstützt, ist die Hausaufgabe, deshalb gibt es diesen Artikel. Daher liegt der Schwerpunkt dieses Artikels nicht auf HTML und CSS. Schließlich kenne ich mich nur ein bisschen mit JS aus und habe es nicht eingehend studiert. Ergebnisse erzielenDie letzte Seite ist wie unten dargestellt. Wenn Sie mit der Maus auf die Schaltfläche klicken, ändert sich die Farbe der Schaltfläche und Sie können gemischte Vorgänge ausführen. In der obersten Zeile wird die Berechnungsformel angezeigt. Wenn Sie "=" drücken, wird das Berechnungsergebnis angezeigt. Verwendete TechnologieDie Rechnerseite wird mithilfe einer HTML-Tabelle dargestellt. Größe, Farbe und Farbe beim Mouseover der Schaltflächen werden durch CSS festgelegt. Wenn Sie auf die Schaltfläche klicken, werden in der obersten Zeile der Wert und das Berechnungsergebnis angezeigt. Die vier gemischten Operationen werden durch JS ausgeführt. UmsetzungsideenHier habe ich es in drei Dateien aufgeteilt, eine .html, eine .css und eine .js 1. Schreiben Sie zunächst HTML und CSS, um das Erscheinungsbild der Webseite zu zeichnen. Ich werde hier nicht ins Detail gehen. Wenn Sie interessiert sind, können Sie sich den Code direkt ansehen Bei der Anzeige der Formel und der Ergebnisse oben habe ich ein Array globaler Variablen definiert. Bei jedem Klicken auf eine Schaltfläche wird der Wert der Schaltfläche in das Array übertragen, sodass das Array bei der Anzeige direkt überschrieben werden kann. Ein weiterer Grund hierfür besteht darin, dass es beim Klicken auf die Rücktaste angezeigt wird und beim Klicken auf die Löschtaste der Array-Variable direkt ein leeres Array zugewiesen wird, was den Vorgang vereinfacht. Der nächste wichtige Schritt ist die Berechnung des Ausdrucks. Wenn wir beispielsweise einen Ausdruck wie 3 * 4,5 - 1= eingeben, wie werten wir ihn aus? Die Methode, die mir eingefallen ist, besteht darin, zuerst das Eingabearray in einen Infix-Ausdruck umzuwandeln, dann den Infix-Ausdruck in einen Postfix-Ausdruck umzuwandeln und dann den Postfix-Ausdruck auszuwerten. 1. Zunächst erhalten wir durch die obige Array-Verarbeitung ein Array wie dieses ['3','*','4','.','5','-','1'] Da es in Schritt 4.5 um die Anwendung des Stapels in der Datenstruktur geht, können Sie die Datenstruktur überprüfen, wenn Sie sich nicht sicher sind. Jetzt haben wir es abgeschlossen. Spezifischer ImplementierungscodeWie oben erwähnt, haben wir genug analysiert, daher werde ich nicht viel dazu sagen und direkt zum Code gehen .html-Dateien <!DOCTYPE html> <html> <Kopf> <title>Rechner</title> <link rel="stylesheet" href="rechner.css" > <script src="Rechner.js"></script> </Kopf> <Text> <div> <Tabellengrenze="1"> <Kopf> <th colspan="4"> <Eingabetyp="Text" ID="Ergebnis" deaktiviert> </th> </thead> <tbody> <tr> <td><button class="bedienen" onclick="showNumber(this)">(</button></td> <td><button class="operieren" onclick="showNumber(this)">)</button></td> <td><button class="operieren" onclick="clearOneResult()">←</button></td> <td><button class="operate" onclick="clearResult()">C</button></td> </tr> <tr> <td><button class="berechnen" onclick="showNumber(this)">7</button></td> <td><button class="berechnen" onclick="showNumber(this)">8</button></td> <td><button class="berechnen" onclick="showNumber(this)">9</button></td> <td><button class="bedienen" onclick="showNumber(this)">*</button></td> </tr> <tr> <td><button class="berechnen" onclick="showNumber(this)">4</button></td> <td><button class="berechnen" onclick="showNumber(this)">5</button></td> <td><button class="berechnen" onclick="showNumber(this)">6</button></td> <td><button class="bedienen" onclick="showNumber(this)">-</button></td> </tr> <tr> <td><button class="berechnen" onclick="showNumber(this)">1</button></td> <td><button class="berechnen" onclick="showNumber(this)">2</button></td> <td><button class="berechnen" onclick="showNumber(this)">3</button></td> <td><button class="bedienen" onclick="showNumber(this)">+</button></td> </tr> <tr> <td><button class="berechnen" onclick="showNumber(this)">0</button></td> <td><button class="berechnen" onclick="showNumber(this)">.</button></td> <td><button class="bedienen" onclick="showNumber(this)">/</button></td> <td><button class="operieren" onclick="showAnswer()">=</button></td> </tr> </tbody> </Tabelle> </div> </body> </html> .css-Dateien Tisch{ Rand: 20px; Polsterung: 1px; } th,Eingabe{ Höhe: 120px; Breite: 410px; Hintergrundfarbe: RGB (233, 232, 232); Textausrichtung: rechts; Schriftgröße: 40px; } Taste{ Höhe: 100px; Breite: 100px; Polsterung: 0px; Schriftgröße: 30px; } th,Eingabe,td,Schaltfläche{ Rand: 0px; } .berechnen{ Hintergrundfarbe: rgb(231, 231, 235); } .arbeiten{ Farbe: Koralle; } Schaltfläche: schweben { Hintergrundfarbe: rgb(147, 241, 253); } .js-Datei var Ergebnis = neues Array(); var ops = "+-*/"; Funktion arrToStr(arr) { var strResult = ""; für (var i = 0; i < arr.length; i++) { strResult += arr[i]; } gibt strResult zurück; } Funktion zeigeErgebnis() { document.getElementById("Ergebnis").value = arrToStr(Ergebnis); } Funktion zeigeNummer(id) { var val = id.innerHTML; Ergebnis.push(Wert); Ergebnis anzeigen(); } Funktion zeigeAntwort() { var Antwort = ""; var str = arrToStr(Ergebnis); var midExpre = strToExpress(str); var suffixExpre = midToSuffix(midExpre); Antwort = Suffixwert(Suffixausdruck); //console.log(midExpre); //console.log(suffixAusdruck); document.getElementById("Ergebnis").Wert = str + "=" + Antwort; } Funktion Ergebnis löschen() { Ergebnis = []; Ergebnis anzeigen(); } Funktion clearOneResult() { Ergebnis.pop(); Ergebnis anzeigen(); } Funktion strToExpress(str) { var textArr = str.split(''); var neuerTextArr = []; var calTextArr = []; für (var i = 0; i < str.length; i++) { wenn (ops.indexOf(str[i]) != -1 ) { newTextArr.push("|", str[i], "|"); } sonst wenn (str[i] == '('){ newTextArr.push(str[i], "|"); } sonst wenn (str[i] == ')'){ newTextArr.push("|", str[i]); } anders { neuerTextArr.push(textArr[i]); } } calTextArr = newTextArr.join('').split('|'); calTextArr zurückgeben; } Funktion midToSuffix(midExpre) { var opStack = []; var SuffixExpre = []; für (var i = 0; i < midExpre.length; i++) { wenn (ops.indexOf(midExpre[i]) != -1 || midExpre[i] == '(' || midExpre[i] == ')' ) { wenn (midExpre[i] == '(' || opStack[opStack.length - 1] == '(') { opStack.push(midExpre[i]); } sonst wenn (midExpre[i] == ')') { Tun { suffixExpre.push(opStack.pop()); } während (opStack[opStack.length - 1] != '('); opStack.pop(); } sonst wenn (opStack.length == 0 || Priorität(midExpre[i]) > Priorität(opStack[opStack.length - 1])) { opStack.push(midExpre[i]); } anders { Tun { suffixExpre.push(opStack.pop()); } während (opStack.length > 0 und Priorität (midExpre[i]) <= Priorität (opStack[opStack.length - 1])); opStack.push(midExpre[i]); } } anders { suffixExpre.push(midExpre[i]); } } während (opStack.length > 0) { suffixExpre.push(opStack.pop()); } gibt SuffixExpre zurück; } Funktion Priorität(op) { var opPri = 0; Schalter (op) { Fall "+": opPri = 1; brechen; Fall "-": opPri = 1; brechen; Fall "*": opPri = 2; brechen; Fall "/": opPri = 2; brechen; } opPri zurückgeben; } Funktion Suffixwert(Suffixausdruck) { var calStack = []; console.log(suffixAusdruck); für (var i = 0; i < SuffixExpre.Länge; i++) { wenn (ops.indexOf(suffixExpre[i]) != -1) { var opRight = Zahl(calStack.pop()); var opLeft = Zahl(calStack.pop()); var tmpResult = 0; Schalter (SuffixAusdruck[i]) { Fall '+': tmpResult = opLinks + opRechts; brechen; Fall '-': tmpResult = Ansicht links - Ansicht rechts; brechen; Fall '*': tmpResult = AnsichtLinks * AnsichtRechts; brechen; Fall '/': tmpResult = links / rechts; brechen; } calStack.push(tmpResult); } anders { calStack.push(suffixExpre[i]); } Konsole.log(calStack); } gibt calStack.pop() zurück; } Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Erstellen Sie in 5 Minuten einen WebRTC-Videochat
>>: Eine schnelle Lösung zum versehentlichen Löschen von MySQL-Daten (MySQL Flashback Tool)
Es gibt eine Frage, die Webdesigner schon lange b...
Inhaltsverzeichnis 1 Node.js-Methode zum Senden v...
Cerebro ist eine Weiterentwicklung des Elasticsea...
Vorwort In der Java-Programmierung werden die mei...
Vorwort Wenn der Code ausgeführt wird und ein Feh...
Vorwort Kürzlich bin ich bei der Entwicklung eine...
Inhaltsverzeichnis Hintergrund Frage Problemanaly...
Entfernen Sie das gepunktete Kästchen auf dem Link...
Inhaltsverzeichnis 1. Lernziele 1.1. Beherrschen ...
Möglicherweise sehen Sie häufig den folgenden Eff...
Heute werden wir darüber sprechen, wie wir Jenkin...
1. Übersicht über Dateiberechtigungen und Eigentu...
Vorwort: Im MySQL-System gibt es viele verschiede...
Inhaltsverzeichnis 10.000 Daten gingen im Hinterg...
Heute habe ich zufällig den Parameter slave_exec_...