我希望编写一个简单的javascript函数来切换给定元素的可见性。问题是,在页面加载之后,初始样式是未知的(至少对我而言)。如何确定给定元素的显示样式元素的当前值是什么?
答案 0 :(得分:7)
来自jQuery / Sizzle源代码:
elem.offsetWidth > 0 || elem.offsetHeight > 0 // visible
elem.offsetWidth === 0 || elem.offsetHeight === 0 // hidden
其中elem
是DOM元素。
现在我不完全确定如果 维度大于零,他们为什么说可见元素。我会说这两个尺寸应该大于零,因为它有资格作为“可见”,但我相信他们知道的更好。 (在浏览器中甚至不可能有一个空维度和另一个非零维度。)
更新:还有关于该主题和替代解决方案的另一个讨论(虽然没有尝试过):How do I check if an element is really visible with JavaScript?
答案 1 :(得分:2)
纯Javascript方式,这应该工作。
function getStyle(elementId){
alert(document.defaultView.getComputedStyle(document.getElementById(elementId), '').getPropertyValue("display"));
}
答案 2 :(得分:1)
function getDisplayStyle(elementId){
var display = document.getElementById(elementId).style.display;
alert(display);
}
答案 3 :(得分:0)
如果您只查看显示属性,则测量偏移将起作用, 但是对可见性的测试需要查看(依赖于浏览器的)样式级联
document.deepCss=function(who, css){
var val, dv= document.defaultView || window;
val= who.style[css];
if(!val){
if(who.currentStyle) val= who.currentStyle[css];
else val= dv.getComputedStyle(who,"").getPropertyValue(css);
}
return val || "";
}
function isVisible(who){
return !!(document.deepCss(who,'visibility') != 'hidden' &&
document.deepCss(who,'display') != 'none');
}
答案 4 :(得分:-1)
使用jQuery,假设你的元素的id为myElement:
if($("#myElement").is(":visible")){
// yep, it's visible - handle accordingly
}else{
// nope, not visible
}
答案 5 :(得分:-1)
不,不,不需要jquery。
如果显示:你没有。否则,可见性也是如此:隐藏。
if(mynode.style.display != "none")
{ .. }
else
答案 6 :(得分:-3)
$(document).ready( function () {
if $('#id').hasClass('hidden')
$('#id').toggelClass('hidden');
);
hidden是隐藏元素的CSS类