最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript DOM從內(nèi)容到節(jié)點(diǎn)的實(shí)戰(zhàn)指南

 更新時間:2026年02月02日 15:39:22   作者:Han.miracle  
DOM(文檔對象模型)是前端開發(fā)中操作頁面結(jié)構(gòu)、內(nèi)容和樣式的核心,本文詳細(xì)介紹了JavaScript中DOM操作的核心技巧,涵蓋元素內(nèi)容、屬性、樣式的讀寫修改,以及節(jié)點(diǎn)的增刪改,通過實(shí)戰(zhàn)示例,感興趣的朋友跟隨小編一起看看吧

DOM(文檔對象模型)是前端開發(fā)中操作頁面結(jié)構(gòu)、內(nèi)容和樣式的核心,本文聚焦 DOM 中元素內(nèi)容、屬性、樣式的讀寫修改,以及節(jié)點(diǎn)的增刪改,結(jié)合實(shí)戰(zhàn)示例講解核心用法與最佳實(shí)踐。

一、操作元素內(nèi)容

元素內(nèi)容操作分為純文本處理和帶 HTML 結(jié)構(gòu)的處理,核心使用 innerTextinnerHTML 兩個屬性,二者特性對比如下:

方法識別 HTML 標(biāo)簽保留換行 / 空格標(biāo)準(zhǔn)性適用場景
innerText??非標(biāo)準(zhǔn)(IE)僅讀取 / 修改純文本
innerHTML??W3C 標(biāo)準(zhǔn)讀取 / 修改帶 HTML 結(jié)構(gòu)的內(nèi)容

1. innerText:純文本操作

僅處理文本內(nèi)容,會忽略 HTML 標(biāo)簽和源碼中的換行 / 空格,適合簡單文本讀寫。

// 讀操作:獲取元素純文本內(nèi)容
var text = element.innerText;
// 寫操作:設(shè)置純文本內(nèi)容(標(biāo)簽會被當(dāng)作普通文本)
element.innerText = "新文本內(nèi)容";

2. innerHTML:HTML 結(jié)構(gòu)操作(高頻使用)

可讀寫包含 HTML 標(biāo)簽的內(nèi)容,保留源碼格式,是動態(tài)渲染頁面的核心方法。

// 讀操作:獲取元素包含 HTML 標(biāo)簽的完整內(nèi)容
var html = element.innerHTML;
// 寫操作:設(shè)置帶 HTML 結(jié)構(gòu)的內(nèi)容(標(biāo)簽會被解析渲染)
element.innerHTML = "<span>新的HTML內(nèi)容</span>";

示例對比

<div>
    <span>hello world</span>
    <span>hello world</span>
</div>
<script>
    var div = document.querySelector('div');
    // innerText 僅輸出文本,無標(biāo)簽、無換行
    console.log(div.innerText); // 輸出:hello world hello world
    // innerHTML 輸出完整 HTML 結(jié)構(gòu),保留換行
    console.log(div.innerHTML); // 輸出:<span>hello world</span>(含換行)
    div.innerText = '<span>hello js</span>'; // 頁面顯示:<span>hello js</span>
    div.innerHTML = '<span>hello js</span>'; // 頁面顯示:hello js(解析為 span 標(biāo)簽)
</script>

?? 注意:innerHTML 存在 XSS 安全風(fēng)險(xiǎn)(如插入惡意腳本),若需插入用戶輸入內(nèi)容,需先轉(zhuǎn)義(如將 < 替換為 &lt;> 替換為 &gt;)。

二、操作元素屬性

可直接通過元素對象的屬性讀寫 HTML 標(biāo)簽屬性,覆蓋圖片、表單等各類元素的核心屬性。

1. 通用元素屬性(如 img/a/div)

以圖片為例,直接讀寫 src、alttitle 等屬性:

<img src="rose.jpg" alt="這是一朵花" title="玫瑰花">
<script>
    var img = document.querySelector('img');
    // 讀屬性:獲取完整 URL(src 會自動補(bǔ)全絕對路徑)
    console.log(img.src); // 輸出:http://xxx/rose.jpg
    console.log(img.alt); // 輸出:這是一朵花
    // 改屬性:點(diǎn)擊切換圖片
    img.onclick = function () {
        if (img.src.includes('rose.jpg')) {
            img.src = './rose2.png';
        } else {
            img.src = './rose.jpg';
        }
    }
</script>

2. 表單元素屬性(input/select/textarea)

表單元素有專屬核心屬性,是實(shí)現(xiàn)交互的關(guān)鍵,常用屬性如下:

屬性作用適用場景
value表單值(輸入框 / 按鈕文本)輸入框內(nèi)容、按鈕文本修改
disabled是否禁用(true/false)禁用按鈕 / 輸入框
checked復(fù)選框 / 單選框是否選中全選 / 反選功能
selected下拉選項(xiàng)是否選中下拉框默認(rèn)選中
type輸入框類型(text/button)切換輸入框類型

示例 1:切換按鈕文本(播放 / 暫停)

<input type="button" value="播放">
<script>
    var btn = document.querySelector('input');
    btn.onclick = function () {
        // 三元表達(dá)式快速切換文本
        btn.value = btn.value === '播放' ? '暫停' : '播放';
    }
</script>

示例 2:點(diǎn)擊計(jì)數(shù)(輸入框值 + 1)

<input type="text" id="text" value="0">
<input type="button" id="btn" value='點(diǎn)我+1'>
<script>
    var text = document.querySelector('#text');
    var btn = document.querySelector('#btn');
    btn.onclick = function () {
        // 注意:value 是字符串,需轉(zhuǎn)為數(shù)字再計(jì)算
        var num = Number(text.value);
        text.value = num + 1;
    }
</script>

示例 3:復(fù)選框全選 / 反選(實(shí)戰(zhàn))

<input type="checkbox" id="all">我全都要 
<input type="checkbox" class="girl">貂蟬 
<input type="checkbox" class="girl">小喬 
<input type="checkbox" class="girl">安琪拉 
<input type="checkbox" class="girl">妲己 
<script>
    var all = document.querySelector('#all');
    var girls = document.querySelectorAll('.girl');
    // 全選/取消全選:同步所有子復(fù)選框狀態(tài)
    all.onclick = function () {
        girls.forEach(girl => girl.checked = all.checked);
    }
    // 單個選項(xiàng)取消:同步取消全選框
    girls.forEach(girl => {
        girl.onclick = function () {
            // 檢測所有子復(fù)選框是否都選中(轉(zhuǎn)為數(shù)組使用 every 方法)
            all.checked = [...girls].every(girl => girl.checked);
        }
    });
</script>

三、操作元素樣式

樣式操作分為 “行內(nèi)樣式”(優(yōu)先級高)和 “類名樣式”(批量修改),按需選擇使用。

1. 行內(nèi)樣式(style)

直接修改元素的 style 屬性,CSS 屬性名需轉(zhuǎn)為駝峰命名(如 background-colorbackgroundColor),適合少量樣式修改。

// 單個樣式修改
element.style.樣式名 = 樣式值;
// 多個樣式批量修改(用 cssText)
element.style.cssText = "樣式名1:值1; 樣式名2:值2;";

示例:點(diǎn)擊放大字體

<div style="font-size: 20px; font-weight: 700;">哈哈</div>
<script>
    var div = document.querySelector('div');
    div.onclick = function () {
        // 解析當(dāng)前字體大?。ㄈサ?px 轉(zhuǎn)為數(shù)字)
        var curSize = parseInt(this.style.fontSize);
        this.style.fontSize = (curSize + 10) + "px"; // 放大 10px
        this.style.color = "red"; // 同時修改字體顏色為紅色
    }
</script>

2. 類名樣式(className/classList)

適合批量修改樣式,通過切換 CSS 類名實(shí)現(xiàn),推薦使用 classList(更靈活,不覆蓋原有類名)。

方法作用示例
className覆蓋原有所有類名elem.className = "box dark"
classList.add()添加類名(不覆蓋原有)elem.classList.add("dark")
classList.remove()刪除指定類名elem.classList.remove("light")
classList.toggle()切換類名(有則刪,無則加)elem.classList.toggle("dark")

示例:夜間模式切換(實(shí)戰(zhàn))

<style>
    .container { width: 100%; height: 300px; padding: 20px; }
    .light { background: #f3f3f3; color: #333; }
    .dark { background: #333; color: #f3f3f3; }
</style>
<div class="container light">這是一大段測試文本</div>
<script>
    var div = document.querySelector('.container');
    div.onclick = function () {
        // 一行切換夜間/日間模式(toggle 自動判斷)
        this.classList.toggle("dark");
        this.classList.toggle("light");
    }
</script>

四、操作節(jié)點(diǎn):增刪改 DOM 樹

DOM 樹的節(jié)點(diǎn)操作是動態(tài)修改頁面結(jié)構(gòu)的核心,包括 “新增節(jié)點(diǎn)” 和 “刪除節(jié)點(diǎn)” 兩類。

1. 新增節(jié)點(diǎn)(兩步法)

步驟 1:創(chuàng)建節(jié)點(diǎn)

核心使用 createElement 創(chuàng)建元素節(jié)點(diǎn),可按需設(shè)置節(jié)點(diǎn)屬性 / 內(nèi)容。

// 創(chuàng)建元素節(jié)點(diǎn)(核心)
var newElem = document.createElement('標(biāo)簽名');
// 可選:設(shè)置節(jié)點(diǎn)屬性/內(nèi)容
newElem.id = "newId";
newElem.className = "newClass";
newElem.innerHTML = "新節(jié)點(diǎn)內(nèi)容";

?? 擴(kuò)展:還可創(chuàng)建文本節(jié)點(diǎn)(document.createTextNode("文本"))、注釋節(jié)點(diǎn)(document.createComment("注釋")),但實(shí)際開發(fā)以 createElement 為主。

步驟 2:插入節(jié)點(diǎn)

創(chuàng)建的節(jié)點(diǎn)需插入到 DOM 樹中才會顯示,常用兩種插入方式:

方法作用語法
appendChild()插入到父節(jié)點(diǎn)最后一個子節(jié)點(diǎn)后父節(jié)點(diǎn).appendChild(新節(jié)點(diǎn))
insertBefore()插入到指定子節(jié)點(diǎn)之前父節(jié)點(diǎn).insertBefore(新節(jié)點(diǎn), 參考節(jié)點(diǎn))

示例 1:appendChild 插入到末尾

<div class="container"></div>
<script>
    // 1. 創(chuàng)建節(jié)點(diǎn)
    var newDiv = document.createElement('div');
    newDiv.innerHTML = "我是新節(jié)點(diǎn)";
    // 2. 插入到 container 末尾
    var container = document.querySelector('.container');
    container.appendChild(newDiv);
</script>

示例 2:insertBefore 插入到指定位置

<div class="container">
    <div>11</div>
    <div>22</div>
</div>
<script>
    var newDiv = document.createElement('div');
    newDiv.innerHTML = "插入到22之前";
    var container = document.querySelector('.container');
    // 插入到第二個子節(jié)點(diǎn)(22)之前
    container.insertBefore(newDiv, container.children[1]);
</script>

?? 擴(kuò)展:

  • insertBefore 的參考節(jié)點(diǎn)為 null,則等價(jià)于 appendChild;
  • 同一節(jié)點(diǎn)插入多次,僅最后一次生效(節(jié)點(diǎn)被 “移動” 而非復(fù)制)。

2. 刪除節(jié)點(diǎn)

傳統(tǒng)方式:通過父節(jié)點(diǎn)刪除

// 父節(jié)點(diǎn)刪除子節(jié)點(diǎn),返回被刪除的節(jié)點(diǎn)
var deletedNode = 父節(jié)點(diǎn).removeChild(待刪除節(jié)點(diǎn));

?? 注意:待刪除節(jié)點(diǎn)必須是父節(jié)點(diǎn)的直接子節(jié)點(diǎn),否則會報(bào)錯。

簡化方式(ES6+):節(jié)點(diǎn)自行刪除

無需找父節(jié)點(diǎn),直接調(diào)用 remove() 即可,更簡潔。

待刪除節(jié)點(diǎn).remove();

示例:刪除指定節(jié)點(diǎn)

<div class="container">
    <div id="delMe">要刪除的節(jié)點(diǎn)</div>
    <div>保留的節(jié)點(diǎn)</div>
</div>
<script>
    var delElem = document.querySelector('#delMe');
    // 方式1:通過父節(jié)點(diǎn)刪除
    delElem.parentElement.removeChild(delElem);
    // 方式2:自行刪除(推薦)
    // delElem.remove();
</script>

?? 擴(kuò)展:刪除的節(jié)點(diǎn)仍在內(nèi)存中,可重新插入到 DOM 樹其他位置;若無需復(fù)用,可賦值 null 釋放內(nèi)存(delElem = null)。

到此這篇關(guān)于JavaScript DOM 核心操作:從內(nèi)容到節(jié)點(diǎn)的實(shí)戰(zhàn)指南的文章就介紹到這了,更多相關(guān)js dom節(jié)點(diǎn)操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

阳山县| 罗甸县| 岢岚县| 通江县| 克东县| 大庆市| 闵行区| 木兰县| 巴彦县| 内丘县| 广西| 林西县| 宝山区| 新疆| 赤城县| 泾阳县| 颍上县| 扶风县| 万载县| 桐城市| 彩票| 惠州市| 奈曼旗| 伊川县| 南郑县| 海安县| 珠海市| 达孜县| 塘沽区| 乳山市| 赫章县| 霞浦县| 漳州市| 东平县| 丰城市| 乳山市| 商丘市| 三台县| 柞水县| 丽江市| 荔浦县|