JavaScript
JavaScript是一種廣泛用于網(wǎng)頁(yè)開發(fā)的腳本語言,可在瀏覽器中運(yùn)行,也可通過Node.js在服務(wù)器端運(yùn)行。
<script> console.log("Hello, JavaScript!"); </script>
- 外鏈?zhǔn)剑?/strong>通過
src屬性引入外部.js文件
<script src="script.js"></script>
- 行內(nèi)式:直接寫在 HTML 標(biāo)簽的事件屬性中(不推薦)
<button onclick="alert('Hi')">點(diǎn)擊</button>
2. 變量與數(shù)據(jù)類型
let age = 20; const name = "Alice"; var isStudent = true; // 不推薦
// 轉(zhuǎn)為字符串 String(123); // "123" 123 + ""; // "123" // 轉(zhuǎn)為數(shù)字 Number("123"); // 123 parseInt("123abc"); // 123 parseFloat("3.14"); // 3.14
// const 示例 const num = 10; // num = 20; // 這行代碼會(huì)報(bào)錯(cuò),因?yàn)?const 聲明的常量不能重新賦值 // let 示例 let count = 5; count = 15; // 可以重新賦值 // var 示例 var name = 'John'; name = 'Jane'; // 可以重新賦值 if (true) { let blockVar = 'block scoped with let'; var functionVar = 'function scoped with var'; } // console.log(blockVar); // 報(bào)錯(cuò),let 具有塊級(jí)作用域 console.log(functionVar); // 可以訪問,var 沒有塊級(jí)作用域
let result = 5 > 3 ? "大于" : "小于"; // "大于"
if (age > 18) { console.log("成年"); } else if (age === 18) { console.log("剛成年"); } else { console.log("未成年"); }
- 循環(huán)語句:
// for 循環(huán) for (let i = 0; i < 5; i++) { console.log(i); } // while 循環(huán) let j = 0; while (j < 5) { console.log(j); j++; } // for...of(遍歷數(shù)組/字符串) const arr = [1, 2, 3]; for (const item of arr) { console.log(item); }
const arr = [1, 2, 3]; const arr2 = new Array(4, 5, 6);
const numbers = [1, 2, 3, 4]; const doubled = numbers.map(n => n * 2); // [2,4,6,8] const even = numbers.filter(n => n % 2 === 0); // [2,4]
const person = { name: "Bob", age: 25, sayHi: function() { console.log("Hi"); } };
- 訪問屬性:
person.name; // "Bob" person["age"]; // 25
- 遍歷對(duì)象:
for (const key in person) { console.log(key + ": " + person[key]); }
// 函數(shù)聲明 function add(a, b) { return a + b; } // 函數(shù)表達(dá)式 const multiply = function(a, b) { return a * b; }; // 箭頭函數(shù)(ES6+) const divide = (a, b) => a / b; // 調(diào)用 console.log(add(2, 3)); // 5
默認(rèn)參數(shù):
function greet(name = "Guest") { console.log("Hello, " + name); } greet(); // "Hello, Guest"
剩余參數(shù):
function sum(...numbers) { return numbers.reduce((total, num) => total + num, 0); } sum(1, 2, 3); // 6
1. 獲取元素document
document 屬于全局對(duì)象,代表整個(gè) HTML 文檔。是 DOM(文檔對(duì)象模型)的根節(jié)點(diǎn)。通過 document 對(duì)象,你可以訪問和操作網(wǎng)頁(yè)中的所有元素(如 <div>、<p>、<button> 等)、屬性、文本內(nèi)容等。能夠?qū)?HTML 文檔的內(nèi)容、結(jié)構(gòu)和樣式進(jìn)行訪問與修改。
2.getElementById
這是 document 對(duì)象的一個(gè)方法,用于 通過 HTML 元素的 id 屬性獲取唯一元素 的 DOM 方法。根據(jù)指定的 id 值,從當(dāng)前文檔中查找并返回對(duì)應(yīng)的唯一元素。由于 HTML 規(guī)范中要求 id 在整個(gè)文檔中是唯一的(不能重復(fù)),因此該方法只會(huì)返回 一個(gè)元素(如果找到),或 null(如果未找到)。
document.getElementById(idValue);
示例:HTML結(jié)構(gòu)
<div id="header">這是頭部</div> <p id="content">這是內(nèi)容</p> <button id="submitBtn">提交</button>
JavaScript代碼
// 獲取 id 為 "content" 的元素 const contentElement = document.getElementById("content"); console.log(contentElement); // 輸出 <p id="content">這是內(nèi)容</p> // 操作獲取到的元素(例如修改內(nèi)容) contentElement.textContent = "修改后的內(nèi)容"; // 嘗試獲取不存在的 id,返回 null const nonExistent = document.getElementById("none"); console.log(nonExistent); // 輸出 null
例如,以下代碼與 getElementById("submitBtn") 效果相同,但 getElementById 更簡(jiǎn)潔高效:
// 等效但不推薦的寫法 document.querySelector("#submitBtn"); // 通過 CSS 選擇器 #id 查找
3.getElementsByClassName
通過類名獲取 HTML 元素 的 DOM 方法。根據(jù)指定的 CSS 類名,從文檔中查找并返回所有包含該類名的元素集合。
document.getElementsByClassName(className); // 或在某個(gè)父元素內(nèi)查找 parentElement.getElementsByClassName(className);
示例:HTML結(jié)構(gòu)
<div class="box">盒子1</div> <div class="box">盒子2</div> <div class="box active">盒子3(激活)</div> <p class="text">文本</p>
JavaScript代碼
// 1. 獲取整個(gè)文檔中所有 class 為 "box" 的元素 const boxes = document.getElementsByClassName("box"); console.log(boxes.length); // 輸出:3(3個(gè)含 "box" 類的元素) // 2. 遍歷集合(需用索引訪問,類似數(shù)組) for (let i = 0; i < boxes.length; i++) { console.log(boxes[i].textContent); // 依次輸出:盒子1、盒子2、盒子3(激活) } // 3. 在特定父元素內(nèi)查找(假設(shè)頁(yè)面有個(gè) id 為 "container" 的容器) const container = document.getElementById("container"); const activeItems = container.getElementsByClassName("active"); // 只查找 container 內(nèi)部 class 為 "active" 的元素 // 4. 多類名匹配(同時(shí)包含 "box" 和 "active" 的元素) const activeBoxes = document.getElementsByClassName("box active"); console.log(activeBoxes.length); // 輸出:1(僅盒子3匹配)
例如,用 querySelectorAll 實(shí)現(xiàn)類似功能:
const boxes = document.querySelectorAll(".box"); // 靜態(tài)集合,不動(dòng)態(tài)更新
4.getElementsByTagName
用于 通過 HTML 標(biāo)簽名獲取元素 的 DOM 方法。根據(jù)指定的 HTML 標(biāo)簽名稱(如 div、p、img 等),從文檔或指定父元素中查找并返回所有匹配該標(biāo)簽的元素集合。
// 從整個(gè)文檔中查找 document.getElementsByTagName(tagName); // 從指定父元素內(nèi)查找(縮小范圍) parentElement.getElementsByTagName(tagName);
示例:HTML結(jié)構(gòu)
<div>盒子1</div> <p>段落1</p> <div>盒子2</div> <p>段落2</p> <ul> <li>列表項(xiàng)1</li> <li>列表項(xiàng)2</li> </ul>
JavaScript代碼
// 1. 獲取整個(gè)文檔中所有 <div> 標(biāo)簽的元素 const divs = document.getElementsByTagName("div"); console.log(divs.length); // 輸出:2(2個(gè) div 元素) // 2. 遍歷集合(通過索引訪問) for (let i = 0; i < divs.length; i++) { console.log(divs[i].textContent); // 依次輸出:盒子1、盒子2 } // 3. 在指定父元素內(nèi)查找(例如只找 <ul> 中的 <li>) const ul = document.getElementsByTagName("ul")[0]; // 先獲取 ul 元素 const lis = ul.getElementsByTagName("li"); console.log(lis.length); // 輸出:2(ul 內(nèi)的 2 個(gè) li 元素) // 4. 不區(qū)分大小寫(查找 <P> 等效于 <p>) const paragraphs = document.getElementsByTagName("P"); console.log(paragraphs.length); // 輸出:2(2個(gè) p 元素)
const allElements = document.getElementsByTagName("*");
通過 CSS 選擇器語法獲取元素 的 DOM 方法,它能根據(jù)靈活的選擇器規(guī)則,從文檔或指定父元素中查找并返回 第一個(gè)匹配的元素。
支持使用各種 CSS 選擇器(如類選擇器、ID 選擇器、標(biāo)簽選擇器、后代選擇器等)來定位元素,是獲取元素的 “萬能工具”,尤其適合復(fù)雜條件的查找。
// 從整個(gè)文檔中查找第一個(gè)匹配的元素 document.querySelector(selector); // 從指定父元素內(nèi)查找第一個(gè)匹配的元素 parentElement.querySelector(selector);
示例:HTML結(jié)構(gòu)
<div class="box">盒子1</div> <div class="box highlight">盒子2(高亮)</div> <p id="intro">介紹文本</p> <ul> <li class="item">項(xiàng)目1</li> <li class="item">項(xiàng)目2</li> </ul>
JavaScript代碼
// 1. 通過 ID 選擇器(#id)獲取元素(等效于 getElementById) const intro = document.querySelector("#intro"); console.log(intro.textContent); // 輸出:介紹文本 // 2. 通過類選擇器(.class)獲取第一個(gè)匹配元素 const firstBox = document.querySelector(".box"); console.log(firstBox.textContent); // 輸出:盒子1 // 3. 通過標(biāo)簽選擇器獲取元素 const firstLi = document.querySelector("li"); console.log(firstLi.textContent); // 輸出:項(xiàng)目1 // 4. 復(fù)雜選擇器(后代選擇器 + 類選擇器) // 查找 ul 中 class 為 item 的第一個(gè)元素 const ulItem = document.querySelector("ul .item"); console.log(ulItem.textContent); // 輸出:項(xiàng)目1 // 5. 在指定父元素內(nèi)查找(如只在 .highlight 元素內(nèi)查找) const highlightBox = document.querySelector(".highlight"); const nested = highlightBox.querySelector("span"); // 假設(shè) .highlight 內(nèi)有 span
// 查找 name 屬性為 "email" 的 input 元素 const emailInput = document.querySelector('input[name="email"]');
const allLis = document.querySelectorAll("li"); // 返回所有 li 的集合
總結(jié):querySelector 是獲取元素的高效且靈活的方法,尤其適合需要復(fù)雜選擇邏輯的場(chǎng)景,是實(shí)際開發(fā)中常用的 DOM 操作工具

浙公網(wǎng)安備 33010602011771號(hào)