目錄
1.html
1. 結構錯誤調試:標簽未正確嵌套
2. 語法問題調試:缺失引號
3. 斷點調試:動態生成內容時的 JavaScript 錯誤
4. 網絡調試:資源加載錯誤
5. 性能調試:頁面加載性能
總結:
2.CSS
1. 定位布局問題:元素重疊或錯位
調試方式:使用瀏覽器開發者工具中的 "元素" 面板
示例代碼:
2. 調試 CSS 選擇器
調試方式:使用開發者工具查看 “計算樣式” 面板
示例代碼:
3. 檢查響應式布局問題
調試方式:使用開發者工具中的 “設備模式”
示例代碼:
4. CSS 動畫調試
調試方式:使用 “動畫” 面板查看動畫狀態
示例代碼:
3.javascript
1. Console 輸出調試
調試方式:使用 console.log() 輸出調試信息
示例代碼:
2. 斷點調試
調試方式:使用瀏覽器開發者工具的 斷點 調試
示例代碼:
3. 調試網絡請求
調試方式:使用 “網絡”(Network)面板調試網絡請求
示例代碼:
4. 捕獲 JavaScript 錯誤
調試方式:使用 “控制臺”(Console)面板查看 JavaScript 錯誤
示例代碼:
5. 調試異步代碼
調試方式:使用 斷點 和 日志輸出 調試異步代碼
示例代碼:
總結
我們把報錯類型做個大分類 分為HTML、CSS、JavaScript三大類
我寫的每個調試方式代碼都是htm 結構 創建一個htm文件 把代碼復制進去 就可以進行實踐
1.html
1. 結構錯誤調試:標簽未正確嵌套
這個示例包含一個嵌套錯誤,瀏覽器的開發者工具會自動高亮顯示錯誤的 DOM 結構。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Structure Error Example</title>
</head>
<body><div><ul><li>Item 1</li><li>Item 2</li></ul></div><p>This paragraph is outside the div, but it’s inside the list (structure error).</p>
</body>
</html>
調試方法:
-
打開瀏覽器開發者工具(按 F12)。
-
在 Elements 面板中查看頁面結構,注意
<p>
標簽的位置,它應該不在<ul>
標簽內部。 -
你會發現瀏覽器自動對這個結構進行提示,發現問題后修復標簽嵌套。
2. 語法問題調試:缺失引號
該示例包含一個屬性值缺少引號的錯誤,這會在控制臺中拋出語法錯誤。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Syntax Error Example</title>
</head>
<body><img src=missing-quotes.jpg alt="Missing Quotes">
</body>
</html>
調試方法:
-
打開瀏覽器開發者工具(按 F12)。
-
在 Console 面板中,你會看到類似
Uncaught SyntaxError: Unexpected token
的錯誤提示,表示src
屬性的值缺少引號。 -
修復錯誤:將
src=missing-quotes.jpg
改為src="missing-quotes.jpg"
。
3. 斷點調試:動態生成內容時的 JavaScript 錯誤
該示例包含一個動態生成 HTML 內容的 JavaScript 錯誤,可以通過斷點調試來定位問題。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Breakpoint Example</title>
</head>
<body><div id="container"></div><script>let container = document.getElementById("container");let itemCount = 5;for (let i = 0; i <= itemCount; i++) {let item = document.createElement("div");item.textContent = "Item " + i;container.appendChild(item);}// Introduce an error by passing null to createElement (we'll debug it)let wrongElement = document.createElement(null); // Error herewrongElement.textContent = "This will throw an error!";container.appendChild(wrongElement);</script>
</body>
</html>
調試方法:
-
打開瀏覽器開發者工具(按 F12),進入 Sources 面板。
-
在 Sources 面板中找到包含 JavaScript 代碼的文件,并在
createElement(null)
行設置一個斷點。 -
刷新頁面,代碼會在該斷點處暫停,查看變量狀態和調用棧,發現錯誤是
createElement(null)
造成的。 -
修復錯誤:將
createElement(null)
改為有效的元素類型(如createElement("div")
)。
4. 網絡調試:資源加載錯誤
該示例模擬一個圖片加載失敗的場景,瀏覽器的開發者工具的 Network 面板會顯示圖片加載的 404 錯誤。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Network Error Example</title>
</head>
<body><h1>Image Loading Error Example</h1><img src="nonexistent-image.jpg" alt="Image Not Found">
</body>
</html>
調試方法:
-
打開瀏覽器開發者工具(按 F12),進入 Network 面板。
-
刷新頁面,查看是否有 404 錯誤,顯示為
nonexistent-image.jpg
加載失敗。 -
修復錯誤:確保圖片路徑正確或使用有效的圖片 URL。
5. 性能調試:頁面加載性能
這個示例包含一個復雜的 JavaScript 動畫,可能會影響頁面加載性能。我們可以使用 Performance 面板來檢查性能瓶頸。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Performance Test Example</title>
</head>
<body><div id="box" style="width: 100px; height: 100px; background-color: red;"></div><script>let box = document.getElementById("box");// Simulate an animation that could cause performance issueslet moveBox = () => {let pos = 0;let interval = setInterval(() => {if (pos >= 500) {clearInterval(interval);} else {pos += 10;box.style.transform = `translateX(${pos}px)`;}}, 16); // 60 frames per second};moveBox();</script>
</body>
</html>
調試方法:
-
打開瀏覽器開發者工具(按 F12),進入 Performance 面板。
-
點擊 “Record” 按鈕開始記錄頁面性能,然后刷新頁面,觀察 Frame Rate 和 CPU Usage,查看動畫是否影響性能。
-
如果你看到頁面性能下降(如幀率過低),可以優化動畫,減少每幀計算的復雜度,或使用
requestAnimationFrame
替代setInterval
來提高性能。
總結:
以上是五種常見的調試方法,每個例子都包含 HTML 代碼和可以通過開發者工具調試和定位的錯誤。你可以通過打開瀏覽器的開發者工具(按 F12),使用 Elements, Console, Network, Sources, Performance 等面板來調試并修復代碼中的問題。
2.CSS
1. 定位布局問題:元素重疊或錯位
問題:網頁元素可能重疊或者不按預期排列。常見原因是 定位屬性、浮動問題 或 寬高設置不當。
調試方式:使用瀏覽器開發者工具中的 "元素" 面板
方法:
-
在瀏覽器開發者工具的 "元素" 面板中,你可以查看和修改頁面中每個元素的 CSS 樣式。
-
通過選擇頁面中的元素,查看它的盒模型(margin、border、padding、content)并且可以在右側修改其 CSS 樣式,看到效果立即反映在頁面上。
示例代碼:
<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>CSS 調試示例</title><style>.container {width: 500px;height: 300px;background-color: lightblue;position: relative;}.box {width: 200px;height: 200px;background-color: lightcoral;position: absolute;top: 50px;left: 50px;}/* 故意設置錯位 */.box2 {width: 200px;height: 200px;background-color: lightgreen;position: absolute;top: 100px;left: 100px;}</style>
</head>
<body><div class="container"><div class="box"></div><div class="box2"></div></div>
</body>
</html>
調試方法:
-
打開開發者工具(
F12
)。 -
選擇 "元素" 面板,查看
.box
和.box2
元素。 -
修改它們的
top
和left
值,看看如何調整元素的位置。 -
通過盒模型面板查看它們的
margin
、border
和padding
是否影響布局。
2. 調試 CSS 選擇器
問題:有時 CSS 樣式沒有生效,可能是選擇器不夠具體或被其他樣式覆蓋。
調試方式:使用開發者工具查看 “計算樣式” 面板
方法:
-
在 “元素” 面板中,選擇一個元素后,切換到右側的 “計算樣式”(Computed Styles)面板,查看該元素的最終計算樣式。
-
你可以看到哪些樣式被應用,哪些被覆蓋。通過查看 “被覆蓋的樣式”,可以幫助定位問題。
示例代碼:
<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>CSS 調試示例</title><style>/* 更具體的選擇器 */.container .box {background-color: lightblue;}/* 一般的選擇器 */.box {background-color: lightcoral;}</style>
</head>
<body><div class="container"><div class="box">這是一個盒子</div></div>
</body>
</html>
調試方法:
-
打開開發者工具,右鍵點擊
.box
元素,選擇 “檢查”。 -
在 “計算樣式” 面板中,查看
.box
元素的樣式,看看是否.container .box
的樣式覆蓋了.box
的樣式。
3. 檢查響應式布局問題
問題:響應式設計沒有正常工作,頁面在不同尺寸下顯示不一致。
調試方式:使用開發者工具中的 “設備模式”
方法:
-
在開發者工具中,點擊左上角的設備圖標,開啟 “設備模式”。
-
你可以選擇不同的設備尺寸,模擬不同設備的屏幕寬度和高度,查看網頁的響應式效果。
示例代碼:
<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>響應式布局示例</title><style>body {font-family: Arial, sans-serif;}.container {display: flex;flex-wrap: wrap;}.box {width: 100%;padding: 20px;margin: 10px;background-color: lightblue;box-sizing: border-box;}@media (min-width: 600px) {.box {width: 48%;}}@media (min-width: 900px) {.box {width: 30%;}}</style>
</head>
<body><div class="container"><div class="box">Box 1</div><div class="box">Box 2</div><div class="box">Box 3</div></div>
</body>
</html>
調試方法:
-
打開開發者工具,點擊設備圖標(手機圖標),進入 “設備模式”。
-
切換不同設備,查看
.box
元素是否根據屏幕寬度變化布局。
4. CSS 動畫調試
問題:CSS 動畫效果沒有按預期執行。
調試方式:使用 “動畫” 面板查看動畫狀態
方法:
-
在開發者工具的 “元素” 面板中,選擇一個包含動畫的元素。
-
然后切換到 “動畫” 面板,你可以看到正在運行的動畫,并可以暫停、恢復、查看每一幀的狀態。
示例代碼:
<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>響應式布局示例</title><style>body {font-family: Arial, sans-serif;}.container {display: flex;flex-wrap: wrap;}.box {width: 100%;padding: 20px;margin: 10px;background-color: lightblue;box-sizing: border-box;}@media (min-width: 600px) {.box {width: 48%;}}@media (min-width: 900px) {.box {width: 30%;}}</style>
</head>
<body><div class="container"><div class="box">Box 1</div><div class="box">Box 2</div><div class="box">Box 3</div></div>
</body>
</html>
調試方法:
-
打開開發者工具,選擇 “元素” 面板,右側查看 “動畫” 面板。
-
你可以查看動畫的詳細信息,檢查是否按預期執行,調整動畫參數等。
3.javascript
1. Console 輸出調試
問題:JavaScript 代碼執行不符合預期,可以通過輸出 console.log()
來查看變量值、函數調用過程等。
調試方式:使用 console.log()
輸出調試信息
方法:
-
在代碼中插入
console.log()
來輸出調試信息,這樣可以快速檢查變量的值和程序執行的狀態。
示例代碼:
<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Console Debug 示例</title>
</head>
<body><button id="btn">點擊我</button><script>document.getElementById('btn').addEventListener('click', function() {let a = 5;let b = 10;console.log("a 和 b 的初始值:", a, b);let result = a + b;console.log("計算結果:", result);if(result > 10) {console.log("結果大于10");} else {console.log("結果小于或等于10");}});</script>
</body>
</html>
調試方法:
-
打開開發者工具,切換到 "控制臺"(Console)面板。
-
點擊按鈕時,你會看到控制臺輸出的信息,幫助你檢查程序邏輯是否符合預期。
2. 斷點調試
問題:代碼執行過程中需要逐步檢查變量和程序執行的順序。
調試方式:使用瀏覽器開發者工具的 斷點 調試
方法:
-
在 “源代碼”(Sources)面板中設置斷點,逐行調試 JavaScript 代碼,查看每個步驟的變量值和執行流程。
示例代碼:
<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>斷點調試示例</title>
</head>
<body><button id="btn">點擊我</button><script>function calculate(a, b) {let result = a + b;console.log("結果:", result);return result;}document.getElementById('btn').addEventListener('click', function() {let a = 10;let b = 20;let sum = calculate(a, b);console.log("最終結果:", sum);});</script>
</body>
</html>
調試方法:
-
打開開發者工具,切換到 “源代碼”(Sources)面板。
-
在
calculate()
函數內的let result = a + b;
這一行點擊設置斷點。 -
點擊按鈕時,瀏覽器會在該行暫停代碼執行,你可以逐步查看變量值、執行流程,并單步調試(通過點擊“逐步執行”按鈕或
F10
)。
3. 調試網絡請求
問題:需要調試 API 請求,查看請求和響應數據是否正確。
調試方式:使用 “網絡”(Network)面板調試網絡請求
方法:
-
在瀏覽器的 “網絡”(Network)面板中,查看網絡請求的詳情,包括請求頭、響應數據、狀態碼等。
示例代碼:
<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>網絡請求調試示例</title>
</head>
<body><button id="fetchData">獲取數據</button><script>document.getElementById('fetchData').addEventListener('click', function() {fetch('https://jsonplaceholder.typicode.com/todos/1').then(response => response.json()).then(data => console.log('返回數據:', data)).catch(error => console.error('請求錯誤:', error));});</script>
</body>
</html>
調試方法:
-
打開開發者工具,切換到 “網絡”(Network)面板。
-
點擊 “獲取數據” 按鈕發起請求。
-
在 “網絡” 面板中查看請求的詳細信息,包括請求的 URL、響應的內容、狀態碼等。你可以查看請求是否成功(200 狀態碼)、返回的數據內容等。
4. 捕獲 JavaScript 錯誤
問題:代碼中有 JavaScript 錯誤,無法正常執行。
調試方式:使用 “控制臺”(Console)面板查看 JavaScript 錯誤
方法:
-
如果 JavaScript 中發生了錯誤,瀏覽器會在 “控制臺”(Console)面板中顯示錯誤信息,包括錯誤類型、行號和錯誤描述。
示例代碼:
<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>JavaScript 錯誤調試示例</title>
</head>
<body><button id="errorBtn">觸發錯誤</button><script>document.getElementById('errorBtn').addEventListener('click', function() {let a = undefined;console.log(a.length); // 這里會報錯,因為 a 是 undefined});</script>
</body>
</html>
調試方法:
-
打開開發者工具,切換到 “控制臺”(Console)面板。
-
點擊按鈕時,控制臺會顯示
TypeError: Cannot read property 'length' of undefined
錯誤。你可以根據錯誤信息定位問題,查看是哪行代碼導致的問題,并檢查變量a
是否為undefined
。
5. 調試異步代碼
問題:異步代碼(如 setTimeout
、Promise
)的執行順序不符合預期。
調試方式:使用 斷點 和 日志輸出 調試異步代碼
方法:
-
對于異步代碼,可以通過
console.log()
打印日志,或設置斷點查看代碼的執行順序。
示例代碼:
<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>異步調試示例</title>
</head>
<body><button id="asyncBtn">執行異步任務</button><script>document.getElementById('asyncBtn').addEventListener('click', function() {console.log('開始異步任務');setTimeout(function() {console.log('異步任務完成');}, 2000);console.log('異步任務已經開始');});</script>
</body>
</html>
調試方法:
-
打開開發者工具,切換到 “控制臺”(Console)面板。
-
點擊按鈕時,控制臺會顯示執行順序:
-
“開始異步任務”
-
“異步任務已經開始”
-
等待 2 秒后,輸出 “異步任務完成”。
-
你可以通過控制臺輸出和斷點調試,檢查異步代碼的執行順序是否符合預期。
總結
通過使用瀏覽器的 控制臺、源代碼 面板、網絡 面板等工具,你可以有效地調試 JavaScript 代碼,定位常見的 邏輯錯誤、網絡請求問題、JavaScript 異常 等。你可以通過輸出日志、設置斷點、查看網絡請求等多種方法幫助你快速定位問題并解決。