前言
JavaScript 是賦予網頁生命的語言。本文系統整理 JS 與 HTML 結合的 5 大核心場景:輸出內容、事件回應、DOM 內容操作、樣式操作、表單驗證,並說明腳本位置最佳實踐與外部檔案載入方式。
1. 寫入 HTML 輸出 — document.write
document.write('This is a heading
');
document.write('This is a paragraph
');
⚠️ 警告: 僅能在文檔解析階段使用。頁面載入後呼叫會**清空整個文檔**並重寫。現代開發**極少使用**,改用 DOM API。
2. 事件回應 — 內聯事件處理器
onclick、onchange、onsubmit、onload 等
- 缺點: 結構與行為耦合、難以維護、CSP 策略可能阻擋
- 現代做法:
addEventListener 分離綁定
3. 改變 HTML 內容 — DOM 核心操作
const el = document.getElementById('demo'); // 查找元素
el.innerHTML = 'Hello JavaScript'; // 修改內容(支援 HTML 標籤)
關鍵 API:
| 屬性/方法 | 用途 | 安全性 |
| innerHTML | 讀/寫 HTML 內容 | ⚠️ XSS 風險,僅用於可信內容 |
| textContent | 讀/寫純文字內容 | ✅ 安全,自動轉義 |
| innerText | 讀/寫可見文字(受 CSS 影響) | ✅ 安全,但效能較差 |
| createElement / appendChild | 建立/插入節點 | ✅ 最安全、效能最佳 |
4. 改變 HTML 樣式 — style 屬性操作
const el = document.getElementById('demo');
el.style.color = '#ff0000'; // 單一屬性
el.style.cssText = 'color:red;font-weight:bold;'; // 批量設定
el.classList.add('highlight'); // 推薦:操作 CSS 類別
最佳實踐: CSS 寫在樣式表,JS 只切換 classList,實現關注點分離。
5. 驗證用戶輸入 — 表單前端驗證
function validate() {
const input = document.getElementById('age').value;
if (isNaN(input)) {
alert('請輸入數字');
return false; // 阻止表單提交
}
return true;
}
HTML5 內建驗證(無需 JS):
腳本嵌入位置與載入時機
| 位置 | 特點 | 適用場景 |
<head> | 優先載入、阻塞渲染 | 關鍵庫、Polyfill、內聯關鍵 CSS |
<body> 內容中 | 阻塞後續渲染 | 極少用、廣告腳本 |
</body> 前 | **推薦**:DOM 就緒、不阻塞渲染 | 大多數業務腳本 |
defer 屬性 | 並行下載、DOMContentLoaded 前按序執行 | 外部腳本、有依賴順序 |
async 屬性 | 並行下載、下載完立即執行(順序不定) | 獨立腳本、Analytics、Ads |
外部 JavaScript 檔案
規則: 外部檔案**不得包含** <script> 標籤,純 JS 代碼即可。
完整範本:現代最佳實踐
JS + HTML 最佳實踐
初始內容
總結
- ✅ 用
document.getElementById / querySelector 取得元素
- ✅ 用
textContent 設定文字、classList 切換樣式
- ✅ 用
addEventListener 綁定事件(非內聯)
- ✅ 腳本放在
</body> 前並加 defer
- ✅ 善用 HTML5 內建驗證減少 JS 代碼
- ✅ 外部檔案純 JS、模組用
type="module"
遵循上述原則,你的 JavaScript 代碼將具備**可維護性、安全性、效能**三大優勢。
- 上一篇文章: PHP 實作無限分類樹:引用賦值(&)單次遍歷構建巢狀結構,代碼極簡效能極致
- 下一篇文章: Apache 整合 PHP 完整圖文教程:httpd.conf 配置、php.ini 調優、擴展載入與驗證步驟
Copyright ©
程式碼之家 All Rights Reserved