国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 web前端 js教程 使用 HTML、CSS 和 JavaScript 建立基本計算器

使用 HTML、CSS 和 JavaScript 建立基本計算器

Jan 11, 2025 pm 10:33 PM

用 JavaScript 建立函數(shù)計算器很有趣,並且使用了很多概念,例如 DOM 操作、事件處理、條件邏輯、字串操作、算術運算、鍵盤輸入整合和使用者介面的 CSS 樣式。在這篇文章中,我們將深入研究程式碼,分解每一行以了解其屬性和功能。讀完本部落格後,我們將牢牢掌握計算器的工作原理。

讓我們開始吧。

設定 HTML 結構

HTML 很簡單,從標準樣板開始。下面是index.html

的程式碼片段

Creating a Basic Calculator Using HTML, CSS and JavaScript

部分,每個部分包含一組按鈕。這些部分包括數(shù)字 (0-9)、數(shù)學運算子 (、-、*、/) 以及其他基本按鈕,例如 AC、C、%、= 和 ..

標籤連結到外部 JavaScript 檔案 script.js,其中定義了計算器的邏輯和功能。此外部文件處理使用者互動和計算,使計算器能夠按預期執(zhí)行操作。

這裡,顯示框顯示輸入並顯示結果,而按鈕框則容納所有計算器按鈕。

新增 CSS 進行樣式設定

現(xiàn)在,讓我們設計我們的計算器,使其具有視覺吸引力且用戶友好。

Creating a Basic Calculator Using HTML, CSS and JavaScript

讓我們分解一下 CSS 程式碼。

  1. 包裝樣式

Creating a Basic Calculator Using HTML, CSS and JavaScript

最小高度:100vh;確保包裝器至少佔據(jù)視窗的整個高度。顯示器:柔性;實現(xiàn)靈活的佈局,允許其子項對齊。調(diào)整內(nèi)容:居中;使內(nèi)容水平居中,同時align-items: center;將內(nèi)容垂直居中。最後,邊框:2px純黑;在包裝周圍添加邊框。

  1. 計算機容器樣式:

Creating a Basic Calculator Using HTML, CSS and JavaScript

顯示:flex;使計算器容器變得靈活,允許將子元素佈置在行或列中。彎曲方向:列;垂直排列子元素。間隙:12px;增加每個部分或元素之間的間距。最後寬度:500px;將計算器的寬度設定為 500px。

  1. 展示盒造型

Creating a Basic Calculator Using HTML, CSS and JavaScript

邊框:1px純黑;為顯示框新增邊框。內(nèi)邊距:16px;在盒子內(nèi)部留出空間以提高可讀性。文字對齊:右對齊;確保文字右對齊。字體大?。?4px;增加字體大小以提高可見性,同時 border-radius: 5px;將盒子的角弄圓。

  1. 按鈕容器與按鈕樣式

Creating a Basic Calculator Using HTML, CSS and JavaScript

這裡,按鈕容器的樣式為 .flex-container,其中 display: flex;為其子元素創(chuàng)建靈活的佈局。對齊內(nèi)容:空間之間;屬性均勻分佈按鈕,按鈕之間留有空間,而間隙:8px;確保每個按鈕之間有適當?shù)拈g距,以便更好地對齊。

每個按鈕都採用 flex: 1; 樣式,這使得它們在一行中佔據(jù)相同的空間。內(nèi)邊距:16px;在每個按鈕內(nèi)添加空間以提高舒適度,字體大?。?0px;確保文字可讀。字體粗細:粗體;使文字突出,同時邊框:1px純黑色;在每個按鈕周圍添加邊框。另外,邊框半徑:8px;按鈕的角落稍微變圓,遊標:指標;當滑鼠懸停在其上時,將遊標變更為指標。按鈕的背景顏色設定為白色,background-color: rgb(255, 255, 255);.

對於「=」按鈕,.equal 類別使用 flex: 2.5;給它更多的空間,使其寬度是其他按鈕的 2.5 倍。當按鈕懸停時,button:hover樣式將背景顏色變更為灰色,背景顏色:rgb(127, 131, 131);並將文字顏色設為白色。這種過渡效果透過過渡進行平滑:background-color 0.3s Easy, Color 0.3s Easy;,允許顏色之間有 0.3 秒的淡入淡出。

使用上面的 HTML 和 CSS,我們的計算機如下所示:

Creating a Basic Calculator Using HTML, CSS and JavaScript

現(xiàn)在讓我們深入了解主要部分,為我們的計算器賦予生命。
JavaScript 程式碼片段
Creating a Basic Calculator Using HTML, CSS and JavaScript

讓我們分解程式碼以便更好地理解。

  1. 選擇 DOM 元素

Creating a Basic Calculator Using HTML, CSS and JavaScript

displayBox 變數(shù)儲存顯示框的引用 (

  1. 顯示變數(shù)和運算符

Creating a Basic Calculator Using HTML, CSS and JavaScript

displayValue 變數(shù)儲存螢幕上要顯示的目前值,確保計算過程中的準確更新。 lastOperator 變數(shù)追蹤最後使用的操作符,防止連續(xù)操作符輸入等錯誤。此外,console.log 用於調(diào)試目的,特別是記錄CalculatorBtns 節(jié)點列表以供審查。

  1. 按鈕點擊事件監(jiān)聽器/循環(huán)每個按鈕

Creating a Basic Calculator Using HTML, CSS and JavaScript

forEach方法用於循環(huán)遍歷calculatorBtns集合中的每個按鈕。對於每個按鈕,innerText屬性被分配給buttonValue變量,該變量保存按鈕上顯示的文本,例如“AC”,“C”,“9”,“ ”等

然後將 onclick 事件偵聽器新增至每個按鈕。單擊按鈕時,將執(zhí)行已指派的功能。此函數(shù)handleButtonAction(buttonValue) 將按鈕的文字(buttonValue) 作為參數(shù)。透過傳遞按鈕的值,該函數(shù)允許計算器執(zhí)行正確的操作,例如清除顯示、輸入數(shù)字或執(zhí)行數(shù)學運算。

  1. 處理鍵盤輸入的按鍵

Creating a Basic Calculator Using HTML, CSS and JavaScript

這使得計算器也可以與鍵盤一起使用。當按下某個鍵時,會觸發(fā)對應按鈕的操作。例如,按下鍵盤上的「1」將觸發(fā)值為「1」的handleButtonAction()函數(shù)。

  1. 顯示功能

Creating a Basic Calculator Using HTML, CSS and JavaScript

display()函數(shù)用目前的displayValue更新顯示框(displayBox)的內(nèi)容。如果displayValue為空,則預設顯示「0.0」。

  1. 按鈕操作處理程序(主要邏輯):

Creating a Basic Calculator Using HTML, CSS and JavaScript

程式碼執(zhí)行幾個步驟來更新計算器的顯示並處理計算。首先,eval(displayValue) 計算儲存在displayValue 中的數(shù)學運算式。例如,如果顯示“3 5”,則 eval 計算並傳回結果,在本例中為 8。

接下來,displayValue = String(result) 將結果轉換為字串並更新displayValue 以在螢幕上顯示結果。計算完成後,lastOperator = "" 將lastOperator 重設為空字串,確保清除任何先前的運算子。最後,display()函數(shù)更新顯示以顯示計算結果。

  1. AC(全部清除)和 C(清除)按鈕邏輯

Creating a Basic Calculator Using HTML, CSS and JavaScript

點選「AC」按鈕時,程式碼檢查buttonValue是否等於「AC」。如果為 true,它將將 displayValue 重置為空字串,從而有效地清除整個顯示並重置計算器。然後呼叫 display() 函數(shù)以空值更新顯示。

對於“C”按鈕,如果buttonValue是“C”,程式碼使用slice(0, -1)從displayValue刪除最後一個字元。這允許用戶刪除最後一個輸入或字符,並再次調(diào)用 display() 函數(shù)以相應地更新顯示。

  1. 驗證運算子

Creating a Basic Calculator Using HTML, CSS and JavaScript

此條件用於驗證是否可以根據(jù)目前顯示的值按下操作符。

條件 ["%", "/", "*", " "].includes(buttonValue) 檢查點選的按鈕是否為運算子之一 (%, /, *, )。如果該按鈕是運算符,則下一步檢查 if (!displayValue || displayValue === "-") 確保在顯示為空或僅包含減號 (-) 時無法按下該運算符。這可以防止出現(xiàn)諸如具有兩個連續(xù)運算符或以一個運算符開頭之類的錯誤。如果條件為真,則函數(shù)將簡單返回,並且不會將任何運算符添加到顯示中。

  1. 防止連續(xù)運算子

Creating a Basic Calculator Using HTML, CSS and JavaScript

此程式碼區(qū)塊處理連續(xù)按下運算子的情況,防止無效輸入,例如「 」或「 -?!?/p>

首先,if (["%", "/", "*", " ", "-"].includes(buttonValue)) 檢查點選的按鈕是否為運算子。然後, const lastCharacter = displayValue.slice(-1) 檢索 displayValue 中目前表達式的最後一個字元。

接下來,lastOperator = buttonValue 更新lastOperator 變數(shù)以儲存目前運算元。如果最後一個字元也是運算子(透過if (["%", "/", "*", " ", "-"].includes(lastCharacter)) 檢查),則程式碼使用displayValue.slice( 0, -1)。這可確保表達式末尾僅出現(xiàn)一個運算符,並防止添加連續(xù)的運算符。

  1. 驗證小數(shù)點

Creating a Basic Calculator Using HTML, CSS and JavaScript

此程式碼區(qū)塊確保小數(shù)點 (.) 在數(shù)字中只能出現(xiàn)一次,從而防止像「3..5.」這樣的無效輸入

首先,條件 if (buttonValue === ".") 檢查點擊的按鈕是否為小數(shù)點。如果是,則繼續(xù)進行驗證。

接下來, const lastOperatorIndex = displayValue.lastIndexOf(lastOperator) 尋找最後一個運算子在 displayValue 中的位置。然後, const currentNumberSet = displayValue.slice(lastOperatorIndex) || displayValue 提取最後一個運算子之後的 displayValue 部分,該部分錶示當前輸入的數(shù)字。如果沒有運算符,則考慮整個 displayValue。

最後,if (currentNumberSet.includes(".")) 檢查擷取的數(shù)字部分是否已包含小數(shù)點。如果是這樣,函數(shù)會提前返回,從而防止使用者輸入第二個小數(shù)點。這可確?!?.5」等數(shù)字有效,但「3..5」等輸入無效。

  1. 用新值更新顯示:

Creating a Basic Calculator Using HTML, CSS and JavaScript

程式碼displayValue = displayValue buttonValue;將按下的按鈕的值(例如數(shù)字或運算子)附加到現(xiàn)有的 displayValue 字串。當使用者與計算器互動時,這會建立當前表達式或數(shù)字。

附加按鈕值後,呼叫display()函數(shù)來更新顯示,確保它反映更新的displayValue。這可確保使用者在輸入時看到最新的值或表達式。

結論

此 JavaScript 程式碼處理在計算器中顯示值、執(zhí)行計算、清除輸入和驗證表達式的邏輯。它適用於按鈕點擊和鍵盤輸入。主要功能包括按下「=」或「Enter」鍵時執(zhí)行計算、處理AC(全部清除)和C(清除最後一個字元)按鈕,以及防止無效操作,例如連續(xù)運算符或多個小數(shù)點。此外,每次操作後都會更新顯示,確保使用者看到最新的值或表達式。這些功能共同為功能性和互動式計算器奠定了基礎。

下面是我的演示鏈接,因此請隨意查看完整程式碼、克隆存儲庫或與實時演示進行交互??鞓肪幋a!
GITHUB - [https://github.com/bigyan1997/calculator]
VERCEL - [https://calculator-delta-sepia-91.vercel.app/]

以上是使用 HTML、CSS 和 JavaScript 建立基本計算器的詳細內(nèi)容。更多資訊請關注PHP中文網(wǎng)其他相關文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權的內(nèi)容,請聯(lián)絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

為什麼要將標籤放在的底部? 為什麼要將標籤放在的底部? Jul 02, 2025 am 01:22 AM

PlacingtagsatthebottomofablogpostorwebpageservespracticalpurposesforSEO,userexperience,anddesign.1.IthelpswithSEObyallowingsearchenginestoaccesskeyword-relevanttagswithoutclutteringthemaincontent.2.Itimprovesuserexperiencebykeepingthefocusonthearticl

如何在JS中與日期和時間合作? 如何在JS中與日期和時間合作? Jul 01, 2025 am 01:27 AM

JavaScript中的日期和時間處理需注意以下幾點:1.創(chuàng)建Date對像有多種方式,推薦使用ISO格式字符串以保證兼容性;2.獲取和設置時間信息可用get和set方法,注意月份從0開始;3.手動格式化日期需拼接字符串,也可使用第三方庫;4.處理時區(qū)問題建議使用支持時區(qū)的庫,如Luxon。掌握這些要點能有效避免常見錯誤。

什麼是在DOM中冒泡和捕獲的事件? 什麼是在DOM中冒泡和捕獲的事件? Jul 02, 2025 am 01:19 AM

事件捕獲和冒泡是DOM中事件傳播的兩個階段,捕獲是從頂層向下到目標元素,冒泡是從目標元素向上傳播到頂層。 1.事件捕獲通過addEventListener的useCapture參數(shù)設為true實現(xiàn);2.事件冒泡是默認行為,useCapture設為false或省略;3.可使用event.stopPropagation()阻止事件傳播;4.冒泡支持事件委託,提高動態(tài)內(nèi)容處理效率;5.捕獲可用於提前攔截事件,如日誌記錄或錯誤處理。了解這兩個階段有助於精確控制JavaScript響應用戶操作的時機和方式。

如何在node.js中提出HTTP請求? 如何在node.js中提出HTTP請求? Jul 13, 2025 am 02:18 AM

在Node.js中發(fā)起HTTP請求有三種常用方式:使用內(nèi)置模塊、axios和node-fetch。 1.使用內(nèi)置的http/https模塊無需依賴,適合基礎場景,但需手動處理數(shù)據(jù)拼接和錯誤監(jiān)聽,例如用https.get()獲取數(shù)據(jù)或通過.write()發(fā)送POST請求;2.axios是基於Promise的第三方庫,語法簡潔且功能強大,支持async/await、自動JSON轉換、攔截器等,推薦用於簡化異步請求操作;3.node-fetch提供類似瀏覽器fetch的風格,基於Promise且語法簡單

垃圾收集如何在JavaScript中起作用? 垃圾收集如何在JavaScript中起作用? Jul 04, 2025 am 12:42 AM

JavaScript的垃圾回收機制通過標記-清除算法自動管理內(nèi)存,以減少內(nèi)存洩漏風險。引擎從根對像出發(fā)遍歷並標記活躍對象,未被標記的則被視為垃圾並被清除。例如,當對像不再被引用(如將變量設為null),它將在下一輪迴收中被釋放。常見的內(nèi)存洩漏原因包括:①未清除的定時器或事件監(jiān)聽器;②閉包中對外部變量的引用;③全局變量持續(xù)持有大量數(shù)據(jù)。 V8引擎通過分代回收、增量標記、並行/並發(fā)回收等策略優(yōu)化回收效率,降低主線程阻塞時間。開發(fā)時應避免不必要的全局引用、及時解除對象關聯(lián),以提升性能與穩(wěn)定性。

JavaScript模塊上的確定JS綜述:ES模塊與COMPORJS JavaScript模塊上的確定JS綜述:ES模塊與COMPORJS Jul 02, 2025 am 01:28 AM

ES模塊和CommonJS的主要區(qū)別在於加載方式和使用場景。 1.CommonJS是同步加載,適用於Node.js服務器端環(huán)境;2.ES模塊是異步加載,適用於瀏覽器等網(wǎng)絡環(huán)境;3.語法上,ES模塊使用import/export,且必須位於頂層作用域,而CommonJS使用require/module.exports,可在運行時動態(tài)調(diào)用;4.CommonJS廣泛用於舊版Node.js及依賴它的庫如Express,ES模塊則適用於現(xiàn)代前端框架和Node.jsv14 ;5.雖然可混合使用,但容易引發(fā)問題

var vs Let vs const:快速JS綜述解釋器 var vs Let vs const:快速JS綜述解釋器 Jul 02, 2025 am 01:18 AM

var、let和const的區(qū)別在於作用域、提升和重複聲明。 1.var是函數(shù)作用域,存在變量提升,允許重複聲明;2.let是塊級作用域,存在暫時性死區(qū),不允許重複聲明;3.const也是塊級作用域,必須立即賦值,不可重新賦值,但可修改引用類型的內(nèi)部值。優(yōu)先使用const,需改變變量時用let,避免使用var。

為什麼DOM操縱緩慢,如何優(yōu)化? 為什麼DOM操縱緩慢,如何優(yōu)化? Jul 01, 2025 am 01:28 AM

操作DOM變慢的主要原因在於重排重繪成本高和訪問效率低。優(yōu)化方法包括:1.減少訪問次數(shù),緩存讀取值;2.批量處理讀寫操作;3.合併修改,使用文檔片段或隱藏元素;4.避免佈局抖動,集中處理讀寫;5.使用框架或requestAnimationFrame異步更新。

See all articles