13

我有一个 javascript 函数,它试图确定 div 是否可见并使用该变量执行各种过程。我可以通过在无和块之间更改元素的显示来成功地交换元素可见性;但我不能存储这个值......

我已尝试获取元素显示属性值并查找元素 ID 是否可见但均无效。当我尝试 .getAttribute 它总是返回 null;我不知道为什么,因为我知道 id 已定义并且它具有显示属性。

这是我尝试过的两种不同方法的代码:

var myvar = $("#mydivID").is(":visible");
var myvar = document.getElementById("mydivID").getAttribute("display");

任何指导或帮助将不胜感激。

4

5 回答 5

22

试试这样:

$(function () {
    // Handler for .ready() called.
    if ($("#mydivID").is(":visible")) {
        alert('Element is visible');
    }
});

小提琴

请确保在head标签内包含 jQuery 文件,如下所示

<head>
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
于 2013-04-27T18:23:56.373 回答
12

如果您只想以javascript方式执行此操作,您可以尝试

window.getComputedStyle(document.getElementById("mydivID"),null).getPropertyValue('display')
于 2016-09-26T21:53:27.000 回答
11

Display 不是属性,它是属性内的 CSSstyle属性。

您可能正在寻找

var myvar = document.getElementById("mydivID").style.display;

或者

var myvar = $("#mydivID").css('display');
于 2013-04-27T18:23:53.777 回答
8

让我们花点时间看看.is(":visible")jQuery 做了什么,好吗?

这是一个链接:https ://github.com/jquery/jquery/blob/master/src/css.js#L529

return !jQuery.expr.filters.hidden( elem );

在哪里

jQuery.expr.filters.hidden = function( elem ) {
    // Support: Opera <= 12.12
    // Opera reports offsetWidths and offsetHeights less than zero on some elements
    return elem.offsetWidth <= 0 && elem.offsetHeight <= 0;
};

所以,它只是检查元素的偏移宽度和高度。

也就是说,同样值得注意的是,当 jQuery 检查某个元素是否隐藏时(例如触发 'toggle' 事件时),它会检查display 属性及其在 dom 中的存在https://github.com/jquery/jquery/blob/master/src/css.js#L43

于 2013-04-27T18:35:14.370 回答
0

var myvar = $("#mydivID").is(":visible"); //这是JQUERY如果可见将返回true

var myvar = document.getElementById("mydivID").getAttribute("display"); //这里显示不是一个属性,所以这不会给出想要的结果。

我的解决方案

1.Select the element using QuerySelector
var myvar= document.querySelector('ELEMENT');

2.Check the OffsetWidth and Offsetheight to be greater than 0;
(myvar.offsetWidth > 0 || myvar.offsetHeight > 0)

3.if myvar is Greater than 0 then it's visble else not.
于 2021-04-23T06:33:34.303 回答