当前位置: 首页 > 面试题库 >

检查元素在DOM中是否可见

归德厚
2023-03-14
问题内容

有什么方法可以检查元素在纯JS(无jQuery)中是否可见?

因此,例如,在此页面中:PerformanceBikes,如果将鼠标悬停在Deals上(在顶部菜单上),则会显示一个交易窗口,但开始时未显示。它在HTML中,但不可见。

那么,给定一个DOM元素,我如何检查它是否可见?我试过了:

window.getComputedStyle(my_element)['display']);

但它似乎不起作用。我想知道应该检查哪些属性。我想到:

display !== 'none'
visibility !== 'hidden'

还有其他我可能会想念的东西吗?


问题答案:

根据此MDN文档,每当元素或元素的任何父元素通过显示样式属性被隐藏时,元素的offsetParent属性都会返回null。只要确保该元素未固定即可。如果position:fixed;页面上没有任何元素,用于检查此内容的脚本可能类似于:

// Where el is the DOM element you'd like to test for visibility
function isHidden(el) {
    return (el.offsetParent === null)
}

另一方面,如果您确实有位置固定的元素可能会在此搜索中被捕获,您将不得不(缓慢地)使用window.getComputedStyle()。在这种情况下,功能可能是:

// Where el is the DOM element you'd like to test for visibility
function isHidden(el) {
    var style = window.getComputedStyle(el);
    return (style.display === 'none')
}

选项#2可能会更直接一些,因为它可以处理更多的边缘情况,但是我敢打赌,它的处理速度也要慢得多,因此,如果您必须多次重复执行此操作,则最好避免使用它。



 类似资料:
  • 有没有什么方法可以让我检查一个元素在纯JS(没有jQuery)中是否可见? 例如,在这个页面:Performance Bikes中,如果你将鼠标悬停在Deals(在顶部菜单上)上,就会出现一个Deals窗口,但一开始并没有显示出来。它在HTML中,但不可见。 那么,给定一个DOM元素,我如何检查它是否可见呢?我试过: 还有其他我可能失踪的吗?

  • 本文向大家介绍如何检查可见DOM中是否存在元素?,包括了如何检查可见DOM中是否存在元素?的使用技巧和注意事项,需要的朋友参考一下 我们可以使用Node.contains方法执行此检查。Node.contains()方法返回一个布尔值,该值指示节点是否为给定节点的后代,即节点本身,其直接子级(childNodes)之一,子级的直接子级之一,依此类推。 示例 例如,您要查找具有id test的元素,

  • 问题内容: 检查div类“ media”是否在浏览器的可视视口内的函数,而不管窗口的滚动位置如何。 试图通过此功能使用此插件,但我不知道如何使它工作。 问题答案: 好吧,您如何尝试使其工作?根据该插件的文档,返回一个布尔值,指示该元素是否可见。因此,您可以像这样使用它:

  • 我是的新手,需要检查元素是否可以在中单击,因为在和上都传递。 我尝试使用以下代码,但不起作用:

  • 问题内容: 我想检查Selenium中是否存在一个元素,如果存在,请将其分配给一个名称。 现在,我有这样的东西: 但是,当不存在值为9的元素时,它将返回错误。有没有一种方法可以检查它是否存在,或者类似的东西? 问题答案: 有几种选择。我推荐这些。 1.创建方法或Web驱动程序扩展。 2.计算元素,如果有1个或更多元素,则获取它。 那你可以检查

  • 我有一对夫妇的变量,我想保存或不保存到数据库取决于是否我已经设置为隐藏/可见的javascript函数,我已经搜索了一段时间,但找不到任何东西。谢谢!