DOM操作学习1

1. DOM的概念

DOM(Document Object Model)是浏览器中把HTML或XML文件结构化为树状结构的API,它使开发者能够通过JavaScript来动态操作网页内容、结构和样式。DOM将网页中的每个元素(如标籤、属性、文本内容等)作为一个对象来表示,这些对象可以被查询、修改、删除或添加。

DOM的主要组成部分:

  • Document:整个HTML文档的顶级对象,表示网页本身。
  • Element:HTML标籤对应的元素对象(如< div>, < p>,< img>)。
  • Attribute:元素上的属性(如class, id等)。
  • Node:DOM中的每个对象都称为一个节点,节点可以是元素节点、文本节点或属性节点等。

2. DOM选择器

在操作DOM之前,首先需要选择我们想要操作的元素。JavaScript提供了几种常用的方法来选择DOM元素:

2.1 getElementById

选择拥有特定id的元素。由于id在一个页面中是唯一的,因此该方法返回单一元素。

let header = document.getElementById(\'header\');
console.log(header.textContent); // 取得元素的文本内容

2.2 getElementsByClassName

选择拥有特定class`的所有元素,返回一个HTMLCollection(类数组),需要通过索引访问具体元素。

let items = document.getElementsByClassName(\'item\');
console.log(items[0].textContent); // 访问第一个元素

2.3 getElementsByTagName

选择页面上所有指定标籤名的元素,返回一个HTMLCollection。

let paragraphs = document.getElementsByTagName(\'p\');
console.log(paragraphs[0].textContent); // 访问第一个段落元素

2.4 querySelector 和 querySelectorAll
  • querySelector:使用CSS选择器语法,返回匹配的第一个元素。
  • querySelectorAll:返回所有匹配的元素,返回值是NodeList,可以使用forEach()来遍历。

let firstItem = document.querySelector(\'.item\'); // 第一个匹配的class为item的元素
let allItems = document.querySelectorAll(\'.item\'); // 所有匹配的class为item的元素
allItems.forEach(item => console.log(item.textContent)); // 遍历所有元素

3. DOM内容操作

3.1 修改文本内容

可以使用textContent或innerHTML来修改元素的文本或HTML内容。

  • textContent:修改元素内部的纯文本内容,不会解析HTML。
  • innerHTML:能够解析并插入HTML标籤,但应谨慎使用,避免XSS攻击。

let heading = document.getElementById(\'header\');
heading.textContent = \'新的标题\'; // 修改纯文本
heading.innerHTML = \'<strong>加粗的标题</strong>\'; // 插入HTML

3.2 修改属性

可以使用getAttribute()和setAttribute()来读取或修改HTML元素的属性,也可以直接通过点语法来操作常见属性(如id、class、src等)。

let image = document.querySelector(\'img\');
image.setAttribute(\'src\', \'new-image.jpg\'); // 修改图片的src属性
console.log(image.getAttribute(\'src\')); // 读取src属性

3.3 修改样式

可以使用style属性直接修改内联样式。注意,CSS属性在JavaScript中使用驼峰式命名(如background-color变为backgroundColor)。

let box = document.querySelector(\'.box\');
box.style.backgroundColor = \'blue\'; // 修改背景颜色
box.style.width = \'200px\'; // 修改宽度