Use native js to implement a simple calculator (with detailed comments) for your reference. The specific contents are as follows <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style> .divs { width: 500px; height: 600px; border: 1px solid #000000; margin: auto; } .divs > input { width: 460px; height: 45px; margin-left: 18px; margin-top: 10px; font-size: 30px; background-color: white; text-align: right; } .divs > div { width: 100px; height: 100px; float: left; border: 1px solid #000000; margin-left: 18px; margin-top: 25px; font-size: 40px; line-height: 100px; text-align: center; user-select: none; } </style> </head> <body> <div class="divs"> <input type="text" value="0" id="input1" disabled /> <div class="block">7</div> <div class="block">8</div> <div class="block">9</div> <div class="block">-</div> <div class="block">4</div> <div class="block">5</div> <div class="block">6</div> <div class="block">+</div> <div class="block">1</div> <div class="block">2</div> <div class="block">3</div> <div class="block">*</div> <div class="block">C</div> <div class="block">0</div> <div class="block">=</div> <div class="block">/</div> </div> js: <script> // Get all elements with class name block var blocks = document.getElementsByClassName("block"); // Get input var input = document.getElementById("input1"); //Declare the first value var firstValue = 0, bool = false; //Declare operator var type; for (var i = 0; i < blocks.length; i++) { //Click on the i-th block blocks[i].onclick = function () { //This points to whoever is clicked. Here, this points to the element clicked each time console.log(this); //this.innerHTML displays the contents of the clicked div (such as 1,2,3,-,+) //Judge whether the clicked value is a number (either NaN or a number) if (!isNaN(this.innerHTML)) { // bool is initially false. When bool is false, you can continue to input. When bool is true, the input is cleared to 0 if (bool) { input.value = "0"; bool = false; } // Add the value in input to the content clicked, and convert it to a number to remove the leading 0, and then convert it to a character input.value = Number(input.value + this.innerHTML).toString(); } else { //Judge whether the click is + - * /if (this.innerHTML !== "C" && this.innerHTML !== "=") { //Save the first number to firstValue firstValue = Number(input.value); //Store the operator in type type = this.innerHTML; //Reset the value in input to 0 input.value = "0"; } else if (this.innerHTML === "C") { //Judge the situation of clicking C//Reset all firstValue = 0; type = undefined; input.value = "0"; } else { //Judge the situation of clicking = //Perform operations according to the type of operator switch (type) { case "+": input.value = (firstValue + Number(input.value)).toString(); break; case "-": input.value = (firstValue - Number(input.value)).toString(); break; case "*": input.value = (firstValue * Number(input.value)).toString(); break; case "/": // Reset input.value when the divisor is 0 if (Number(input.value) === 0) input.value = "0"; else input.value = (firstValue / Number(input.value)).toString(); break; } //When bool is true, after clicking "=", when you enter again, input.value is 0 bool = true; } } }; } The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM. You may also be interested in:
|
<<: Explanation of monitoring parameters in performance and sys schema in MySQL 5.7 (recommended)
>>: Summary of solutions to common Linux problems
Solution: Directly in the directory where you dow...
Table of contents Select Structure Loop Structure...
download http://nginx.org/en/download.html Unzip ...
Introduction to jQuery The jQuery library can be ...
To query two different tables, you need to merge ...
Introduction to NFS NFS (Network File System) is ...
Before we use JSX to build a component system, le...
Table of contents Overview What are callbacks or ...
Table of contents 1. Docker enables remote access...
Does performance really matter? Performance is im...
vue scaffolding -> vue.cli Quickly create a la...
<br />Table is an awkward tag in XHTML, so y...
Table of contents Scenario Analysis Development S...
Table of contents Preface 【undo log】 【redo log】 【...
1. Use contrasting colours. The contrast here ref...