Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检测集合中最靠近窗口的元素 请考虑以下例子: const somevar = document.querySelectorAll('.someclass');_Javascript_Html_Dom - Fatal编程技术网

Javascript 检测集合中最靠近窗口的元素 请考虑以下例子: const somevar = document.querySelectorAll('.someclass');

Javascript 检测集合中最靠近窗口的元素 请考虑以下例子: const somevar = document.querySelectorAll('.someclass');,javascript,html,dom,Javascript,Html,Dom,结果我们得到了一系列的物品。如何检测该集合中最靠近窗口的元素?我所说的最近不是指物理位置,而是DOM层次结构中的位置 我需要提到的是,在某些情况下,我们可以在同一DOM级别获得多个元素,在这种特定情况下,我需要DOM中最高的元素 注意:请不要使用jquery。您可以使用parentElement属性遍历元素的文档树,直到根,以评估每个元素的深度,并通过该属性确定最接近根的元素: //获取所有匹配节点作为节点列表 const resultNodes=document.queryselectoral

结果我们得到了一系列的物品。如何检测该集合中最靠近窗口的元素?我所说的最近不是指物理位置,而是DOM层次结构中的位置

我需要提到的是,在某些情况下,我们可以在同一DOM级别获得多个元素,在这种特定情况下,我需要DOM中最高的元素


注意:请不要使用jquery。

您可以使用
parentElement
属性遍历元素的文档树,直到根,以评估每个元素的深度,并通过该属性确定最接近根的元素:

//获取所有匹配节点作为节点列表
const resultNodes=document.queryselectoral(“.someclass”)
//将节点列表对象转换为节点数组
常量results=[…resultNodes.keys()].map(key=>resultNodes[key]);
//计算DOM树中每个元素的深度
const resultsWithDepth=results.map(结果=>{
返回{
要素:结果,
深度:计算的元素深度(结果,0)
}
})
getElementWithLowestDepth(resultsWithDepth);
//以结束递归方式计算DOM元素的深度
函数ComputedOmeElementDepth(元素,currentDepth){
if(element.parentElement==null){
回流深度;
}
返回computeDOMElementDepth(element.parentElement,++currentDepth);
}
//过滤掉DOM中最高的元素。(第一个元素优先)
函数getElementWithLowestDepth(元素){
返回元素。减少((元素1,元素2)=>{
if(元素2.深度<元素1.深度){
返回元素2;
}
返回元素1;
})
}

这是否回答了您的问题@贾斯汀娜:不,不能解决问题。我把我的问题编辑得更具体一些。它怎么解决不了问题?你是怎么用的?您必须循环您的
somevar
并应用引用的问题solution@Justinas我编辑了我的问题,我不需要物理位置,而是DOM层次结构中的位置。然后你能给出你想要的示例吗?通过DOM层次结构,我只了解元素数组。该数组与计算机窗口没有任何关系。