TML DOM 节点
在 HTML DOM (Document Object Model) 中, 每个东西都是 节点 :
文档本身就是一个文档对象
所有 HTML 元素都是元素节点
所有 HTML 属性都是属性节点
插入到 HTML 元素文本是文本节点
注释是注释节点
元素对象
在 HTML DOM 中, 元素对象代表着一个 HTML 元素。
元素对象 的 子节点可以是, 可以是元素节点,文本节点,注释节点。
NodeList 对象 代表了节点列表,类似于 HTML元素的子节点集合。
元素可以有属性。属性属于属性节点。
浏览器支持
所有主流浏览器都支持 元素对象 和 NodeList 对象。.
属性和方法
以上属性和方法可适用于所有 HTML 元素:
属性 / 方法 | 描述 |
---|---|
element.accessKey | 设置或返回accesskey一个元素 |
element.addEventListener() | 向指定元素添加事件句柄 |
element.appendChild() | 为元素添加一个新的子元素 |
element.attributes | 返回一个元素的属性数组 |
element.childNodes | 返回元素的一个子节点的数组 |
element.classlist | 返回元素的类名,作为 DOMTokenList 对象。 |
element.className | 设置或返回元素的class属性 |
element.clientHeight | 在页面上返回内容的可视高度(不包括边框,边距或滚动条) |
element.clientWidth | 在页面上返回内容的可视宽度(不包括边框,边距或滚动条) |
element.cloneNode() | 克隆某个元素 |
element.compareDocumentPosition() | 比较两个元素的文档位置。 |
element.contentEditable | 设置或返回元素的内容是否可编辑 |
element.dir | 设置或返回一个元素中的文本方向 |
element.firstChild | 返回元素的第一个子节点 |
element.focus() | 设置文档或元素获取焦点 |
element.getAttribute() | 返回指定元素的属性值 |
element.getAttributeNode() | 返回指定属性节点 |
element.getElementsByTagName() | 返回指定标签名的所有子元素集合。 |
element. getElementsByClassName() | 返回文档中所有指定类名的元素集合,作为 NodeList 对象。 |
element.getFeature() | 返回指定特征的执行APIs对象。 |
element.getUserData() | 返回一个元素中关联键值的对象。 |
element.hasAttribute() | 如果元素中存在指定的属性返回 true,否则返回false。 |
element.hasAttributes() | 如果元素有任何属性返回true,否则返回false。 |
element.hasChildNodes() | 返回一个元素是否具有任何子元素 |
element.hasFocus() | 返回布尔值,检测文档或元素是否获取焦点 |
element.id | 设置或者返回元素的 id。 |
element.innerHTML | 设置或者返回元素的内容。 |
element.insertBefore() | 现有的子元素之前插入一个新的子元素 |
element.isContentEditable | 如果元素内容可编辑返回 true,否则返回false |
element.isDefaultNamespace() | 如果指定了namespaceURI 返回 true,否则返回 false。 |
element.isEqualNode() | 检查两个元素是否相等 |
element.isSameNode() | 检查两个元素所有有相同节点。 |
element.isSupported() | 如果在元素中支持指定特征返回 true。 |
element.lang | 设置或者返回一个元素的语言。 |
element.lastChild | 返回的最后一个子元素 |
element.namespaceURI | 返回命名空间的 URI。 |
element.nextSibling | 返回该元素紧跟的一个节点 |
element.nodeName | 返回元素的标记名(大写) |
element.nodeType | 返回元素的节点类型 |
element.nodeValue | 返回元素的节点值 |
element.normalize() | 使得此成为一个"normal"的形式,其中只有结构(如元素,注释,处理指令,CDATA节和实体引用)隔开Text节点,即元素(包括属性)下面的所有文本节点,既没有相邻的文本节点也没有空的文本节点 |
element.offsetHeight | 返回,任何一个元素的高度包括边框和填充,但不是边距 |
element.offsetWidth | 返回元素的宽度,包括边框和填充,但不是边距 |
element.offsetLeft | 返回当前元素的相对水平偏移位置的偏移容器 |
element.offsetParent | 返回元素的偏移容器 |
element.offsetTop | 返回当前元素的相对垂直偏移位置的偏移容器 |
element.ownerDocument | 返回元素的根元素(文档对象) |
element.parentNode | 返回元素的父节点 |
element.previousSibling | 返回某个元素紧接之前元素 |
element.querySelector() | 返回匹配指定 CSS 选择器元素的第一个子元素 |
document.querySelectorAll() | 返回匹配指定 CSS 选择器元素的所有子元素节点列表 |
element.removeAttribute() | 从元素中删除指定的属性 |
element.removeAttributeNode() | 删除指定属性节点并返回移除后的节点。 |
element.removeChild() | 删除一个子元素 |
element.removeEventListener() | 移除由 addEventListener() 方法添加的事件句柄 |
element.replaceChild() | 替换一个子元素 |
element.scrollHeight | 返回整个元素的高度(包括带滚动条的隐蔽的地方) |
element.scrollLeft | 返回当前视图中的实际元素的左边缘和左边缘之间的距离 |
element.scrollTop | 返回当前视图中的实际元素的顶部边缘和顶部边缘之间的距离 |
element.scrollWidth | 返回元素的整个宽度(包括带滚动条的隐蔽的地方) |
element.setAttribute() | 设置或者改变指定属性并指定值。 |
element.setAttributeNode() | 设置或者改变指定属性节点。 |
element.setIdAttribute() | |
element.setIdAttributeNode() | |
element.setUserData() | 在元素中为指定键值关联对象。 |
element.style | 设置或返回元素的样式属性 |
element.tabIndex | 设置或返回元素的标签顺序。 |
element.tagName | 作为一个字符串返回某个元素的标记名(大写) |
element.textContent | 设置或返回一个节点和它的文本内容 |
element.title | 设置或返回元素的title属性 |
element.toString() | 一个元素转换成字符串 |
nodelist.item() | 返回某个元素基于文档树的索引 |
nodelist.length | 返回节点列表的节点数目。 |
HTML DOM 节点
在 HTML DOM (Document Object Model) 中, 每个东西都是 节点 :
文档本身就是一个文档对象
所有 HTML 元素都是元素节点
所有 HTML 属性都是属性节点
插入到 HTML 元素文本是文本节点
注释是注释节点
元素对象
在 HTML DOM 中, 元素对象代表着一个 HTML 元素。
元素对象 的 子节点可以是, 可以是元素节点,文本节点,注释节点。
NodeList 对象 代表了节点列表,类似于 HTML元素的子节点集合。
元素可以有属性。属性属于属性节点(查看下一节)。
浏览器支持
所有主流浏览器都支持 元素对象 和 NodeList 对象。.
属性和方法
以上属性和方法可适用于所有 HTML 元素:
属性 / 方法 | 描述 |
---|---|
element.accessKey | 设置或返回accesskey一个元素 |
element.addEventListener() | 向指定元素添加事件句柄 |
element.appendChild() | 为元素添加一个新的子元素 |
element.attributes | 返回一个元素的属性数组 |
element.childNodes | 返回元素的一个子节点的数组 |
element.classlist | 返回元素的类名,作为 DOMTokenList 对象。 |
element.className | 设置或返回元素的class属性 |
element.clientHeight | 在页面上返回内容的可视高度(不包括边框,边距或滚动条) |
element.clientWidth | 在页面上返回内容的可视宽度(不包括边框,边距或滚动条) |
element.cloneNode() | 克隆某个元素 |
element.compareDocumentPosition() | 比较两个元素的文档位置。 |
element.contentEditable | 设置或返回元素的内容是否可编辑 |
element.dir | 设置或返回一个元素中的文本方向 |
element.firstChild | 返回元素的第一个子节点 |
element.focus() | 设置文档或元素获取焦点 |
element.getAttribute() | 返回指定元素的属性值 |
element.getAttributeNode() | 返回指定属性节点 |
element.getElementsByTagName() | 返回指定标签名的所有子元素集合。 |
element. getElementsByClassName() | 返回文档中所有指定类名的元素集合,作为 NodeList 对象。 |
element.getFeature() | 返回指定特征的执行APIs对象。 |
element.getUserData() | 返回一个元素中关联键值的对象。 |
element.hasAttribute() | 如果元素中存在指定的属性返回 true,否则返回false。 |
element.hasAttributes() | 如果元素有任何属性返回true,否则返回false。 |
element.hasChildNodes() | 返回一个元素是否具有任何子元素 |
element.hasfocus() | 返回布尔值,检测文档或元素是否获取焦点 |
element.id | 设置或者返回元素的 id。 |
element.innerHTML | 设置或者返回元素的内容。 |
element.insertBefore() | 现有的子元素之前插入一个新的子元素 |
element.isContentEditable | 如果元素内容可编辑返回 true,否则返回false |
element.isDefaultNamespace() | 如果指定了namespaceURI 返回 true,否则返回 false。 |
element.isEqualNode() | 检查两个元素是否相等 |
element.isSameNode() | 检查两个元素所有有相同节点。 |
element.isSupported() | 如果在元素中支持指定特征返回 true。 |
element.lang | 设置或者返回一个元素的语言。 |
element.lastChild | 返回的最后一个子元素 |
element.namespaceURI | 返回命名空间的 URI。 |
element.nextSibling | 返回该元素紧跟的一个元素 |
element.nodeName | 返回元素的标记名(大写) |
element.nodeType | 返回元素的节点类型 |
element.nodeValue | 返回元素的节点值 |
element.normalize() | 使得此成为一个"normal"的形式,其中只有结构(如元素,注释,处理指令,CDATA节和实体引用)隔开Text节点,即元素(包括属性)下面的所有文本节点,既没有相邻的文本节点也没有空的文本节点 |
element.offsetHeight | 返回,任何一个元素的高度包括边框和填充,但不是边距 |
element.offsetWidth | 返回元素的宽度,包括边框和填充,但不是边距 |
element.offsetLeft | 返回当前元素的相对水平偏移位置的偏移容器 |
element.offsetParent | 返回元素的偏移容器 |
element.offsetTop | 返回当前元素的相对垂直偏移位置的偏移容器 |
element.ownerDocument | 返回元素的根元素(文档对象) |
element.parentNode | 返回元素的父节点 |
element.previousSibling | 返回某个元素紧接之前元素 |
element.querySelector() | 返回匹配指定 CSS 选择器元素的第一个子元素 |
document.querySelectorAll() | 返回匹配指定 CSS 选择器元素的所有子元素节点列表 |
element.removeAttribute() | 从元素中删除指定的属性 |
element.removeAttributeNode() | 删除指定属性节点并返回移除后的节点。 |
element.removeChild() | 删除一个子元素 |
element.removeEventListener() | 移除由 addEventListener() 方法添加的事件句柄 |
element.replaceChild() | 替换一个子元素 |
element.scrollHeight | 返回整个元素的高度(包括带滚动条的隐蔽的地方) |
element.scrollLeft | 返回当前视图中的实际元素的左边缘和左边缘之间的距离 |
element.scrollTop | 返回当前视图中的实际元素的顶部边缘和顶部边缘之间的距离 |
element.scrollWidth | 返回元素的整个宽度(包括带滚动条的隐蔽的地方) |
element.setAttribute() | 设置或者改变指定属性并指定值。 |
element.setAttributeNode() | 设置或者改变指定属性节点。 |
element.setIdAttribute() | |
element.setIdAttributeNode() | |
element.setUserData() | 在元素中为指定键值关联对象。 |
element.style | 设置或返回元素的样式属性 |
element.tabIndex | 设置或返回元素的标签顺序。 |
element.tagName | 作为一个字符串返回某个元素的标记名(大写) |
element.textContent | 设置或返回一个节点和它的文本内容 |
element.title | 设置或返回元素的title属性 |
element.toString() | 一个元素转换成字符串 |
nodelist.item() | 返回某个元素基于文档树的索引 |
nodelist.length | 返回节点列表的节点数目。 |
如您还有不明白的可以在下面与我留言或是与我探讨QQ群308855039,我们一起飞!
avaScript 的 Rest 和 Spread 操作符自 ES6 引入以来,大大改变了开发者处理数组和对象的方式。这些操作符提供了更简洁、更易读的语法,使代码更易于理解和维护。本文将介绍如何有效地使用 Rest 和 Spread 操作符,并通过示例进行说明。
Rest 操作符(...)允许你将多个元素收集到一个数组或对象中,通常用于函数参数中,将参数列表转换为数组。而 Spread 操作符(...)则用于将数组或对象展开为单个元素,这在复制、合并或传递数组和对象时特别有用。
理解并掌握这些操作符可以大大提升你的 JavaScript 编码水平,使代码更加简洁和富有表现力。
函数参数处理
Rest 操作符在函数定义中非常有用,可以处理不定数量的参数:
function multiply(...numbers) {
return numbers.reduce((product, number) => product * number, 1);
}
console.log(multiply(2, 3, 4)); // 输出: 24
在这个例子中,multiply 函数接受任意数量的参数并进行相乘。Rest 操作符将所有参数收集到 numbers 数组中,使得可以轻松应用 reduce 等数组方法。
数组解构
Rest 操作符还可以在数组解构中使用,将剩余元素收集到一个新数组中:
const [head, ...tail] = ['a', 'b', 'c', 'd'];
console.log(head); // 输出: 'a'
console.log(tail); // 输出: ['b', 'c', 'd']
在这个例子中,数组的第一个元素被赋值给 head,其余元素则被收集到 tail 数组中。
数组合并
使用 Spread 操作符,数组合并变得非常简单:
const fruits = ['apple', 'banana'];
const vegetables = ['carrot', 'potato'];
const food = [...fruits, ...vegetables];
console.log(food); // 输出: ['apple', 'banana', 'carrot', 'potato']
在这个例子中,Spread 操作符将 fruits 和 vegetables 展开为单个元素并合并到 food 数组中。
数组复制
创建数组副本同样很方便:
const numbers = [1, 2, 3];
const numbersCopy = [...numbers];
console.log(numbersCopy); // 输出: [1, 2, 3]
这样创建了一个包含与 numbers 数组相同元素的新数组 numbersCopy,修改 numbersCopy 不会影响 numbers。
对象合并
Spread 操作符还可以用于对象的合并:
const person = { name: 'Alice', age: 25 };
const job = { title: 'developer', company: 'Tech Co.' };
const employee = { ...person, ...job };
console.log(employee); // 输出: { name: 'Alice', age: 25, title: 'developer', company: 'Tech Co.' }
在这个例子中,person 和 job 被合并到 employee 对象中,形成一个新的对象。
对象解构中的 Rest 操作符
Rest 操作符可以在对象解构中使用,收集剩余的属性:
const { title, ...details } = { title: 'Book', author: 'John Doe', year: 2021 };
console.log(title); // 输出: 'Book'
console.log(details); // 输出: { author: 'John Doe', year: 2021 }
这个例子展示了如何提取特定属性(title),同时将剩余属性收集到 details 对象中。
Spread 操作符用于函数参数
在调用接受多个参数的函数时,Spread 操作符可以简化传递数组元素作为参数:
function concatenate(str1, str2, str3) {
return str1 + str2 + str3;
}
const words = ['Hello', ' ', 'World!'];
console.log(concatenate(...words)); // 输出: 'Hello World!'
通过展开 words 数组,每个元素作为独立参数传递给 concatenate 函数。
JavaScript 中的 Rest 和 Spread 操作符是强大的工具,可以极大地增强代码的灵活性和可读性。不论是处理数组、对象还是函数参数,这些操作符都能提供优雅的解决方案。通过掌握这些操作符,你可以编写更简洁、高效的代码,提升整体开发体验。
理解并有效使用 Rest 和 Spread 操作符,不仅可以简化当前项目,还能为未来的挑战做好准备,使你的 JavaScript 代码更易维护和表达。
*请认真填写需求信息,我们会在24小时内与您取得联系。