js瀏覽器操作DOM之更新DOM


拿到一個DOM節點后,我們可以對它進行更新。

可以直接修改節點的文本,方法有兩種:

一種是修改innerHTML屬性,這個方式非常強大,不但可以修改一個DOM節點的文本內容,還可以直接通過HTML片段修改DOM節點內部的子樹:

// 獲取<p id="p-id">...</p>
var p = document.getElementById('p-id');
// 設置文本為abc:
p.innerHTML = 'ABC'; // <p id="p-id">ABC</p>
// 設置HTML:
p.innerHTML = 'ABC <span style="color:red">RED</span> XYZ';
// <p>...</p>的內部結構已修改

innerHTML時要注意,是否需要寫入HTML。如果寫入的字符串是通過網絡拿到的,要注意對字符編碼來避免XSS攻擊。

第二種是修改innerTexttextContent屬性,這樣可以自動對字符串進行HTML編碼,保證無法設置任何HTML標簽:

// 獲取<p id="p-id">...</p>
var p = document.getElementById('p-id');
// 設置文本:
p.innerText = '<script>alert("Hi")</script>';
// HTML被自動編碼,無法設置一個<script>節點:
// <p id="p-id">&lt;script&gt;alert("Hi")&lt;/script&gt;</p>

 

兩者的區別在於讀取屬性時,innerText不返回隱藏元素的文本,而textContent返回所有文本。另外注意IE<9不支持textContent

修改CSS也是經常需要的操作。DOM節點的style屬性對應所有的CSS,可以直接獲取或設置。因為CSS允許font-size這樣的名稱,但它並非JavaScript有效的屬性名,所以需要在JavaScript中改寫為駝峰式命名fontSize

// 獲取<p id="p-id">...</p>
var p = document.getElementById('p-id');
// 設置CSS:
p.style.color = '#ff0000';
p.style.fontSize = '20px';
p.style.paddingTop = '2em';

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM