15.1 【基礎項目】使用 HTML、CSS 和 TypeScript 構建的簡單計數器應用

一個簡單的計數器應用是學習如何集成 HTML、CSS 和 TypeScript 的絕佳項目。該應用允許用戶對計數值進行增加、減少和重置,展示了 TypeScript 中基本的 DOM 操作和事件處理。

我們將構建的內容

我們將創建一個具有以下功能的計數器應用:

  • 增加計數值
  • 減少計數值(不能低于 0)
  • 重置計數值為 0

項目預覽圖

一個典型的計數器界面:數字居中顯示,下方是三種按鈕:增加、減少、重置。

計數器應用 – HTML 和 CSS 布局

下面是完整的 HTML 和 CSS 代碼,用于構建計數器的結構與樣式:

<!DOCTYPE html>
<html lang="zh"><head><meta charset="UTF-8"><title>計數器應用</title><style>body {font-family: Arial, sans-serif;background-color: #f4f4f4;display: flex;justify-content: center;align-items: center;height: 100vh;margin: 0;}.container {text-align: center;background: white;padding: 20px;border-radius: 8px;box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);}h1 {margin-bottom: 20px;}.counter {font-size: 3rem;margin: 20px 0;}.buttons button {padding: 10px 20px;margin: 5px;font-size: 1rem;cursor: pointer;border: none;border-radius: 4px;transition: background 0.3s;}#increment {background: #4caf50;color: white;}#decrement {background: #f44336;color: white;}#reset {background: #2196f3;color: white;}.buttons button:hover {opacity: 0.8;}</style></head><body><div class="container"><h1>計數器應用</h1><div id="counter" class="counter">0</div><div class="buttons"><button id="increment">增加</button><button id="decrement">減少</button><button id="reset">重置</button></div></div><script src="task.js"></script> <!-- 編譯后的 JS 文件 --></body>
</html>

TypeScript 邏輯代碼

以下是計數器的 TypeScript 邏輯,處理按鈕點擊事件并更新顯示值:

const counter = document.getElementById('counter') as HTMLDivElement;
const incrementBtn = document.getElementById('increment') as HTMLButtonElement;
const decrementBtn = document.getElementById('decrement') as HTMLButtonElement;
const resetBtn = document.getElementById('reset') as HTMLButtonElement;let count = 0;function updateCounter() {counter.textContent = count.toString();
}incrementBtn.addEventListener('click', () => {count++;updateCounter();
});decrementBtn.addEventListener('click', () => {if (count > 0) {count--;updateCounter();}
});resetBtn.addEventListener('click', () => {count = 0;updateCounter();
});

代碼說明

  • 選擇并類型斷言 DOM 元素,確保類型安全;
  • 初始化 count 值為 0;
  • updateCounter() 函數用于更新頁面上的計數顯示;
  • 為三個按鈕分別綁定點擊事件。

TypeScript 編譯為 JavaScript

瀏覽器不能直接運行 TypeScript,因此需要將 .ts 文件編譯為 .js 文件。使用如下命令之一:

npx tsc task.ts
# 或
tsc task.ts

運行命令后,將生成 task.js 文件,并可在 HTML 中引用運行。

項目總結

這個簡單的計數器項目非常適合初學者,通過它你可以熟悉 TypeScript 與 HTML、CSS 的結合,掌握基本的類型斷言、DOM 操作與事件監聽。進一步,你可以嘗試添加更多功能,例如:

  • 設置最大值或最小值;
  • 將當前值存儲到本地存儲;
  • 添加加減速率設置等。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/82758.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/82758.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/82758.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

RT-Thread源碼閱讀(3)——內核對象管理

_object_container對象容器數組 在RT-Thread操作系統中&#xff0c;_object_container數組的作用是按類型分類管理內核對象&#xff0c;提供高效的類型檢查、資源管理和統計功能 struct rt_list_node {struct rt_list_node *next; /**< point to…

《智能醫學》征稿通知:7天可見刊,專科及以上可發表

香港科學出版社(Hong Kong Scientific Publishers Journals)是一家全球獨立高質量的學術出版機構&#xff0c;遵循國際開放獲取的出版(OA)原則。現已與科檢易學術攜手共同征集高質量文章。目前可出版來自高等學校、科研院所和企業的先進科技成果。包括理、工、農、醫、經、管、…

如何利用categraf的exec插件實現對Linux主機系統用戶及密碼有效期進行監控及告警?

需求描述 Categraf作為夜鶯監控平臺的數據采集工具&#xff0c;為了保障Linux主機的安全&#xff0c;需要實現對系統用戶密碼有效期的監控&#xff0c;并在密碼即將到期時及時告警&#xff0c;以提醒運維人員更改密碼。本章將詳細介紹如何利用Categraf的exec插件來實現這一功能…

RV1126-OPENCV 交叉編譯

一.下載opencv-3.4.16.zip到自己想裝的目錄下 二.解壓并且打開 opencv 目錄 先用 unzip opencv-3.4.16.zip 來解壓 opencv 的壓縮包&#xff0c;并且進入 opencv 目錄(cd opencv-3.4.16) 三. 修改 opencv 的 cmake 腳本的內容 先 cd platforms/linux 然后修改 arm-gnueabi.to…

如何加載私鑰為 SecKeyRef

本文介紹如何在 iOS/macOS 下將私鑰加載為 SecKeyRef&#xff0c;涵蓋 PEM 格式的 ECC 密鑰讀取、X9.63 數據構建、以及與 Keychain 的集成。 1. 使用 SecKeyCreateWithData 加載私鑰 Apple 提供的 SecKeyCreateWithData 方法可以直接將密鑰數據加載為 SecKeyRef 對象。 SecK…

Missashe考研日記—Day44-Day50

Missashe考研日記—Day44-Day50 寫在面前 本系列博客用于記錄博主一周的學習進度&#xff0c;具體知識總結在目前已有的筆記中&#xff1a;1.高數強化學習筆記2.計網復習筆記3.新增&#xff1a;線代題型總結 專業課408 這周先是把計網第三章數據鏈路層剩下的局域網以及之后…

Windows下安裝并使用kubectl查看K8S日志

【1】安裝kubectl 官網文檔&#xff1a;https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-windows/ 下載后得到 kubectl.exe&#xff0c;放到一個目錄下&#xff0c;然后配置環境變量。 此時CMD 進入DOS命令窗口 kubectl version【2】配置config文件 其實就是…

攻防世界János-the-Ripper

打開壓縮包是一個文件&#xff0c;用010Editor打開可以發現里面有隱藏文件flag.txt 此時想到分離文件&#xff0c;利用binwalk工具 利用binwalk生成出的是一個壓縮包&#xff0c;解壓縮但是發現竟然解壓需要密碼 這里就可以開始暴力破解密碼了&#xff0c;這里我用的是ARCHPR工…

XPlifeapp:高效打印,便捷生活

在數字化時代&#xff0c;雖然電子設備的使用越來越普遍&#xff0c;但打印的需求依然存在。無論是學生需要打印課表、資料&#xff0c;還是職場人士需要打印名片、報告&#xff0c;一個高效便捷的打印軟件都能大大提高工作效率。XPlifeapp就是這樣一款超級好用的手機打印軟件&…

【計算機網絡】第2章:應用層—Web and HTTP

目錄 一、Web 與 HTTP 二、總結 &#xff08;一&#xff09;Web 的定義與功能 &#xff08;二&#xff09;HTTP 協議的定義與功能 &#xff08;三&#xff09;HTTP 協議的核心機制 1. HTTP 請求與響應流程 2. HTTP 的連接類型 3. HTTP 的狀態碼 &#xff08;四&#xf…

如何實現 LRU 緩存:基于LinkedHashMap?

全文目錄&#xff1a; 開篇語前言1. LinkedHashMap 簡介1.1 LinkedHashMap 的構造方法 2. 基于 LinkedHashMap 實現 LRU 緩存2.1 設計思路2.2 實現步驟2.3 代碼說明2.4 測試案例2.5 解釋 3. LRU 緩存優化3.1 removeEldestEntry() 方法的靈活性3.2 內存管理 4. 總結文末 開篇語 …

Spring Boot測試框架全面解析

Spring Boot測試框架基礎 Spring Boot通過增強Spring測試框架的能力,為開發者提供了一系列簡化測試流程的新注解和特性。該框架建立在成熟的Spring測試基礎之上,通過自動化配置和專用注解顯著提升了測試效率。 核心依賴配置 要使用Spring Boot的全部測試功能,只需在項目中…

Spring Boot 整合 Spring Data JPA、strategy 的策略區別、什么是 Spring Data JPA

DAY29.2 Java核心基礎 Spring Boot 整合 Spring Data JPA Spring Data JPA根據具體的數據庫分為不同的子模塊&#xff0c;無論是關系型數據庫和非關系型數據庫&#xff0c;Spring Data都提供了支持 Mysql&#xff1a;Spring Data JPA Redis&#xff1a;Spring Data Redis …

Ubuntu 服務器配置與 Cloudflare Tunnel 部署指南 免費內網穿透家用服務器

Ubuntu 服務器配置與 Cloudflare Tunnel 部署指南 本文檔總結了服務器配置相關內容&#xff0c;包括 Ubuntu 服務器配置、硬盤擴容、靜態 IP 設置以及 Cloudflare Tunnel 的部署步驟。 目錄 硬盤分區與擴容設置靜態 IPCloudflare Tunnel 部署SSH 通過 Cloudflare Tunnel常見…

降低實驗檢測報告編制耗時 質檢LIMS系統的應用策略

在質檢工作流程中&#xff0c;檢測報告編制往往是耗時耗力的關鍵環節。傳統人工編制報告不僅效率低下&#xff0c;還容易出現數據錯誤、格式不統一等問題。質檢 LIMS 系統憑借其強大的自動化、智能化功能&#xff0c;為檢測報告編制帶來革命性變革&#xff0c;能夠將編制時間減…

同為.net/C#的跨平臺運行時的mono和.net Core有什么區別?

Mono 和 .NET Core&#xff08;現已統一為 .NET&#xff09;都是 .NET 生態的跨平臺實現&#xff0c;但它們在設計目標、技術特性和應用場景上有顯著區別。以下是詳細對比&#xff1a; ??1. 歷史背景?? ??項目????誕生時間????開發者????當前狀態????Mo…

Android AIDL Hal最低保證出現的問題

1. AIDL HAL 的“最低保證”特性 &#xff08;1&#xff09;協議層級的強制支持 在 IComposer AIDL 接口定義中&#xff08;如 android.hardware.graphics.composer3&#xff09;&#xff0c;Google 已經將部分功能列為 必須支持的特性&#xff08;MUST&#xff09;。例如&am…

蘋果FINDMY和谷歌FIND HUB增強共享位置功能

近期&#xff0c;蘋果Findmy增強了追蹤和分享丟失物品位置方面的功能&#xff0c;“共享物品位置”&#xff0c;用戶可以安全地與航空a公司等第三方分享丟失物品的位置&#xff0c;以便于行李找回。 iOS 18.2的這一新功能使用戶可以輕松、安全地與航空公司等第三方分享AirTag或…

基于GA遺傳優化的FIR濾波器幅頻相頻均衡補償算法matlab仿真

目錄 1.程序功能描述 2.測試軟件版本以及運行結果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 在數字信號處理領域&#xff0c;有限沖激響應&#xff08;FIR&#xff09;濾波器因其結構簡單、穩定性好且易于實現線性相位等優點被廣泛應用。然而&#xff0c;實…

雙路物理CPU機器上安裝Ubuntu并部署KVM以實現系統多開

在雙路物理CPU機器上安裝Ubuntu并部署KVM以實現系統多開&#xff0c;并追求性能最優&#xff0c;需要從硬件、宿主機系統、KVM配置、虛擬機配置等多個層面進行優化。 以下是詳細的操作指南和優化建議&#xff1a; 階段一&#xff1a;BIOS/UEFI 設置優化 (重啟進入) 啟用虛擬化…