if-statement - 如果父级不可见,则 IntroJs 提示
问题描述
IntroJs 提示 当父元素不可见时,如何跳过或隐藏?出于某种原因,似乎只有内联对我的提示起作用。我在 HTML 的跨度中有数据提示,我需要检查最近的元素是否可见或父/子元素。
var hints = false;
var all = document.getElementsByTagName("*");
功能介绍功能(){
for (var i = 0, max = all.length; i < max; i++) {
if ((isHidden(all[i]) && hints));
document.getElementById("#helpFunc").html("Show Help");
introJs().hideHints();
} else {
document.getElementById("#helpFunc").html("Hide Help");
introJs().showHints();
}
hints = !hints;
function isHidden(el) {
var style = window.getComputedStyle(el);
return ((style.display === 'none') || (style.visibility === 'hidden'));
}
}
解决方案
与其尝试获取元素的计算样式,不如尝试检查元素边界矩形 - 如果没有,则表示该元素不可见。
!!el.getClientRects().length; // false means el or its parent(s) is hidden
LE:这不适用于“可见性:隐藏;” 尽管。因此,也许您可以将上述内容与您已有的内容结合起来。
推荐阅读
- php - Symfony 无法自动装配服务 不存在此类服务
- javascript - 网页未使用 pug 格式以 express 呈现
- java - Ant 媒体服务器:java.lang.reflect.InvocationTargetException
- odoo - 如何在报价单的小计中添加另一个折扣?
- javascript - (Google Sheet API) 如何将 10 添加到 A1?(Javascript)
- javascript - CKeditor + java上传图片
- reactjs - 如何在 Reactjs 中添加新元素
- activemq-artemis - 按内容属性过滤邮件
- python - 如何只显示同名的一行
- google-chrome - DevTools 覆盖活动