HTML与JS可通过DOM API实现动态转换,如用JS创建/修改HTML元素(document.createElement/innerHTML),或通过模板引擎将数据渲染为HTML,二者协同可实现页面动态更新与
选择HTML元素
方法 | 示例 | 用途 |
document.getElementById | document.getElementById("myId") | 通过ID获取单个元素 |
document.querySelector | document.querySelector(".myClass") | 通过CSS选择器获取第一个匹配元素 |
document.getElementsByClassName | document.getElementsByClassName("myClass") | 通过类名获取元素集合(HTMLCollection) |
document.querySelectorAll | document.querySelectorAll("div") | 通过CSS选择器获取所有匹配元素(NodeList) |
创建HTML元素
方法 | 示例 | 用途 |
document.createElement | document.createElement("div") | 创建指定标签的元素 |
document.createTextNode | document.createTextNode("文字内容") | 创建文本节点 |
parentNode.appendChild | container.appendChild(newElement) | 将新元素追加到父容器末尾 |
element.insertBefore | parent.insertBefore(newElement, referenceNode) | 在指定参照节点前插入新元素 |
修改元素属性
方法 | 示例 | 用途 |
element.setAttribute | img.setAttribute("src", "new.jpg") | 设置元素属性值 |
element.removeAttribute | input.removeAttribute("disabled") | 移除元素属性 |
直接赋值(类/id/内联样式) | element.className = "newClass"
element.id = "newId"
element.style.color = "red" | 快速修改类名/ID/内联样式 |
处理事件
方法 | 示例 | 用途 |
addEventListener | btn.addEventListener("click", function(){...}) | 绑定事件监听器(支持多个) |
事件委托 | list.addEventListener("click", e => {...}) | 在父元素监听子元素事件 |
移除事件监听器 | btn.removeEventListener("click", handler) | 移除已绑定的特定监听器 |
方法 | 示例 | 用途 |
innerHTML | element.innerHTML = "<strong>加粗</strong>" | 插入HTML片段 |
textContent | element.textContent = "纯文本内容" | 插入纯文本内容 |
模板字符串 | section.innerHTML = ${data.map(item => <li>${item}</li> ).join(“”)}` | 结合数据渲染列表 |
相关问题与解答
Q1:如何批量修改多个相同类名的元素样式?
A1:使用querySelectorAll
获取元素集合后遍历操作:

const elements = document.querySelectorAll(".target");
elements.forEach(el => {
el.style.color = "blue";
el.style.fontSize = "20px";
});
Q2:如何优化频繁的DOM操作性能?
A2:采用以下策略:
- 使用
DocumentFragment
缓存多次操作: const fragment = document.createDocumentFragment();
for(let i=0; i<10; i++){
const li = document.createElement("li");
li.textContent = `Item ${i}`;
fragment.appendChild(li);
}
list.appendChild(fragment); // 一次性插入
- 避免直接操作
innerHTML
,改用textContent
或创建文本节点。 - 合并样式修改,例如先设置`element.style