DOM(文档对象模型)是一种用于表示和操作HTML和XML文档的标准。在JavaScript中,可以使用DOM API来对DOM进行操作
获取元素:
document.getElementById(id)
: 根据元素的id属性获取元素。document.getElementsByClassName(className)
: 根据元素的class属性获取元素。document.getElementsByTagName(tagName)
: 根据元素的标签名获取元素。document.querySelector(selector)
: 根据选择器获取第一个匹配的元素。document.querySelectorAll(selector)
: 根据选择器获取所有匹配的元素。创建元素:
document.createElement(tagName)
: 创建一个指定标签名的元素节点。document.createTextNode(text)
: 创建一个包含指定文本内容的文本节点。修改元素属性和内容:
element.setAttribute(name, value)
: 设置元素的属性值。element.getAttribute(name)
: 获取元素的属性值。element.innerHTML
: 设置或获取元素的HTML内容。element.innerText
: 设置或获取元素的文本内容。添加和删除元素:
parentElement.appendChild(newChild)
: 将一个新的子节点添加到指定父节点的子节点列表的末尾。parentElement.removeChild(child)
: 从指定父节点的子节点列表中删除一个子节点。修改元素样式:
element.style.property = value
: 设置元素的CSS样式属性值。添加事件监听器:
element.addEventListener(event, listener)
: 给元素添加一个事件监听器。element.removeEventListener(event, listener)
: 移除元素的一个事件监听器。查询和修改元素的位置和尺寸:
element.getBoundingClientRect()
: 获取元素相对于视口的位置和尺寸信息。element.offsetTop
: 获取元素相对于其父元素的垂直偏移量。element.offsetLeft
: 获取元素相对于其父元素的水平偏移量。element.offsetWidth
: 获取元素的宽度(包括边框和内边距)。element.offsetHeight
: 获取元素的高度(包括边框和内边距)。这只是一些常见的DOM操作,还有很多其他操作可以根据具体需求进行学习和使用。
// 根据id获取元素
const elementById = document.getElementById('myElement');
console.log(elementById);
// 根据class获取元素
const elementsByClass = document.getElementsByClassName('myClass');
console.log(elementsByClass);
// 根据标签名获取元素
const elementsByTagName = document.getElementsByTagName('div');
console.log(elementsByTagName);
// 根据选择器获取元素
const elementBySelector = document.querySelector('.myClass');
console.log(elementBySelector);
const elementsBySelectorAll = document.querySelectorAll('.myClass');
console.log(elementsBySelectorAll);
结果示例:
HTMLCollection [div.myClass, div.myClass]
HTMLCollection [div, div, div]
NodeList [div.myClass, div.myClass]
// 创建元素节点
const newElement = document.createElement('div');
newElement.textContent = 'New Element';
console.log(newElement);
// 创建文本节点
const newText = document.createTextNode('New Text');
console.log(newText);
结果示例:
New Element
New Text
const element = document.getElementById('myElement');
// 设置属性值
element.setAttribute('data-id', '123');
console.log(element.getAttribute('data-id'));
// 设置HTML内容
element.innerHTML = 'Hello World';
console.log(element.innerHTML);
// 设置文本内容
element.innerText = 'Hello, Vue!';
console.log(element.innerText);
结果示例:
123
Hello World
Hello, Vue!
const parentElement = document.getElementById('parentElement');
// 添加子节点
const newChild = document.createElement('div');
newChild.textContent = 'New Child';
parentElement.appendChild(newChild);
console.log(parentElement);
// 删除子节点
parentElement.removeChild(newChild);
console.log(parentElement);
结果示例:
New Child
const element = document.getElementById('myElement');
// 设置样式属性值
element.style.backgroundColor = 'red';
element.style.color = 'white';
console.log(element.style);
结果示例:
{
backgroundColor: 'red',
color: 'white'
}
const button = document.getElementById('myButton');
// 添加点击事件监听器
button.addEventListener('click', () => {
console.log('Button clicked');
});
// 移除点击事件监听器
const clickListener = () => {
console.log('Button clicked');
};
button.addEventListener('click', clickListener);
button.removeEventListener('click', clickListener);
结果示例:
Button clicked
const element = document.getElementById('myElement');
// 获取位置和尺寸信息
const rect = element.getBoundingClientRect();
console.log(rect);
// 获取垂直偏移量
console.log(element.offsetTop);
// 获取水平偏移量
console.log(element.offsetLeft);
// 获取宽度和高度
console.log(element.offsetWidth);
console.log(element.offsetHeight);
结果示例:
DOMRect {
bottom: 100,
height: 50,
left: 100,
right: 200,
top: 50,
width: 100,
x: 100,
y: 50
}
50
100
100
50
这些示例展示了一些常见的DOM操作,你可以根据具体需求进行学习和使用。
获取元素:
getElementById
、getElementsByClassName
、getElementsByTagName
、querySelector
和querySelectorAll
等方法。创建元素:
createElement
和createTextNode
方法。修改元素属性和内容:
setAttribute
、getAttribute
、innerHTML
和innerText
等方法。innerHTML
和innerText
方法可能存在安全性问题,因为它们可以执行任意的HTML和脚本代码。添加和删除元素:
appendChild
和removeChild
方法。修改元素样式:
style
属性来实现。style
属性直接操作样式可能会导致代码混乱和难以维护。添加事件监听器:
addEventListener
和removeEventListener
方法添加和移除事件监听器。查询和修改元素的位置和尺寸:
getBoundingClientRect
、offsetTop
、offsetLeft
、offsetWidth
和offsetHeight
等属性和方法。这些是常见的DOM操作的使用场景和优缺点,根据具体的需求和情况选择合适的操作方式。在使用DOM操作时,需要注意性能问题和安全性问题,避免频繁操作DOM或执行不安全的操作。