Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.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 如何在特定元素中获取DOM元素? 我想做什么_Javascript_Html_Ecmascript 6 - Fatal编程技术网

Javascript 如何在特定元素中获取DOM元素? 我想做什么

Javascript 如何在特定元素中获取DOM元素? 我想做什么,javascript,html,ecmascript-6,Javascript,Html,Ecmascript 6,我想得到一个特定元素.main的高度中心,然后得到那里的DOM元素 我试过的 我想我可以使用elementFromPoint()获得一个DOM元素 ① ② 但在这两种情况下,检索到的DOM元素都不是预期的。 显然,elementFromPoint()似乎基于视口获取DOM元素 我想使用,但由于浏览器支持很少,这是不可能的 有没有更好的方法来获取特定元素中的DOM元素 您得到的是高度和宽度中心,但没有添加从文档左侧和顶部开始的main偏移量 通过将您的演示调整到以下位置,我发现elementp

我想得到一个特定元素
.main
的高度中心,然后得到那里的DOM元素


我试过的 我想我可以使用
elementFromPoint()
获得一个DOM元素

但在这两种情况下,检索到的DOM元素都不是预期的。
显然,
elementFromPoint()
似乎基于视口获取DOM元素


我想使用,但由于浏览器支持很少,这是不可能的


有没有更好的方法来获取特定元素中的DOM元素

您得到的是高度和宽度中心,但没有添加从文档左侧和顶部开始的main偏移量

通过将您的演示调整到以下位置,我发现element
p.active

const rect = document.getElementsByClassName("main")[0].getBoundingClientRect();

const mainHCenter = rect.top + (rect.height / 2);
const mainWCenter = rect.left + (rect.width / 2);
                  // ^^^^^   add left and top offsets


var centerElm = document.elementFromPoint(mainWCenter, mainHCenter);
                                        // ^^^ don't use zero

console.log(centerElm);// returned p.active

请注意,
elementFromPoint()
也在该点获得最高的z索引元素。它下面的元素将被遮蔽。您还可以根据子项的边距获取
main
。您的实际用例是什么?提供一个带有基本cssAlso的实时示例,
指针事件:根据MDN-@charlietfl,无
元素将不会返回,我用JSFiddle再现了实际情况。请稍候。@PhistucK可能该元素没有使用
指针事件:无。。我将用JSFiddle做一个真正的演示。请稍等,我最近做了类似的事情。必须用一个小的阈值做一个while循环,以像素增量从点向下滑动元素,以到达子节点,因为子节点的边距会在中间暴露父节点。在我的本地环境中,它也工作得很好!非常感谢你!我真的很抱歉,但由于我的错误,我使它有点难以看到,所以请打开演示css的Nomazized css并将标题改为Fiddle meta“DOM问题”?x(
// Get the center of the height of .main
const main = document.querySelector(".main");
const centerY = main.offsetHeight / 2;
const centerX = main.offsetWidth / 2;

// Get the element at the center of the height of .main
const element = document.elementFromPoint(centerX, centerY);
const rect = document.getElementsByClassName("main")[0].getBoundingClientRect();

const mainHCenter = rect.top + (rect.height / 2);
const mainWCenter = rect.left + (rect.width / 2);
                  // ^^^^^   add left and top offsets


var centerElm = document.elementFromPoint(mainWCenter, mainHCenter);
                                        // ^^^ don't use zero

console.log(centerElm);// returned p.active