js 递归获取div的含有某个属性的父级节点
时间: 2024-02-27 21:57:44 浏览: 26
如果要递归获取div的含有某个属性的父级节点,可以使用JavaScript中的递归函数。具体实现方式如下:
```javascript
function getParentDivWithAttr(div, attr) {
if (div.parentNode) {
if (div.parentNode.hasAttribute(attr)) {
return div.parentNode;
} else {
return getParentDivWithAttr(div.parentNode, attr);
}
}
return null;
}
var div = document.querySelector('div[属性名]');
var parentDiv = getParentDivWithAttr(div, '属性名');
```
其中,`getParentDivWithAttr()`方法是递归函数,用于获取div的含有某个属性的父级节点。如果该div节点的父级节点含有该属性,直接返回父级节点;否则,递归调用该方法,直到找到含有该属性的父级节点或者到达根节点为止。最后,获取到的父级节点赋值给`parentDiv`变量。
相关问题
sql 怎么递归获取子级元素 多个父级
在 SQL 中,可以使用递归查询(Recursive Query)来获取树形结构中的子级元素。如果有多个父级,则需要使用递归查询来获取所有父级下的子元素。
在 MySQL 中,可以使用 WITH RECURSIVE 子句来实现递归查询。以下是一个示例:
```
WITH RECURSIVE cte AS (
SELECT id, parent_id, name FROM my_table WHERE id IN (1, 2)
UNION
SELECT t.id, t.parent_id, t.name FROM my_table t
JOIN cte ON t.parent_id = cte.id
)
SELECT id, parent_id, name FROM cte;
```
在这个示例中,我们首先选择了具有给定 ID 的记录作为起始点,并将其添加到公共表达式(CTE)中。然后,我们使用 UNION 和 JOIN 连接 CTE 和表本身,以获取所有子元素。最后,我们从 CTE 中选择所有元素。
请注意,这只是一个简单的示例,实际使用中可能需要根据具体情况进行修改。另外,不同的数据库可能具有不同的语法和特性,因此具体实现可能会有所不同。
js json通过对象的某个值查询父级节点
可以通过遍历整个 JSON 对象,找到包含目标值的节点,并记录下该节点的父节点,最后返回父节点。
以下是一个示例代码:
```javascript
function findParentNode(jsonObj, targetValue, parentPath = []) {
for (let key in jsonObj) {
let value = jsonObj[key];
let currentPath = parentPath.concat(key); // 记录当前路径
if (value === targetValue) {
return { node: jsonObj, parentPath };
} else if (typeof value === 'object') {
let parentNode = findParentNode(value, targetValue, currentPath);
if (parentNode) {
return parentNode;
}
}
}
}
let jsonObj = {
name: 'John',
age: 30,
address: {
street: '123 Main St',
city: 'Anytown',
state: 'CA'
}
};
let result = findParentNode(jsonObj, 'Anytown');
console.log(result); // { node: { street: '123 Main St', city: 'Anytown', state: 'CA' }, parentPath: ['address'] }
```
在上面的代码中,我们定义了一个名为 `findParentNode` 的函数,它接收三个参数:要查询的 JSON 对象、目标值和当前节点路径。函数会遍历整个 JSON 对象,如果找到目标值,就返回包含该值的节点和其父节点路径;如果当前节点是一个对象,则递归调用自身,直到找到目标值为止。最后,我们可以得到目标值所在节点的父节点路径。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)