一、找出当前节点的子元素节点
思路:
- 先拿到当前节点的子节点集合
- 循环遍历这些节点,找出元素节点并添加到元素集合中
- 如果传了数字参数,就返回元素集合中对应下标的节点
- 没传参数就返回整个元素集合
Element.prototype.getChildNode = function (index) {const childNodes = this.childNodes,len = childNodes.length,resArr = [];for (let i = 0; i < len; i++) {const item = childNodes[i];item.nodeType === 1 && resArr.push(item);}if (index !== undefined && typeof(index) !== 'number') {return null;}return index === undefined ? resArr : resArr[index];}
二、找出当前节点的第 n 层父级元素
思路:
- 先找到当前节点
- 再找到对应层级的父节点
- 遍历这个父节点下的所有子节点,过滤出所有元素节点并添加到元素集合中
- 返回元素集合
Element.prototype.getParentNode = function (n) {let node = this,type = typeof(n);if (type === undefined && type !== 'number') {return;}if (n < 0) {return null;}while (n) {if (node.nodeName === '#document') { // 找到 html,也就是 document 之前就停止node = null;return null;}node = node.parentNode;n--;}return node;}