2011-09-19 87 views
0

请帮忙,因为当我使用clcik并调用Javascript函数来取消隐藏元素时,它会再次隐藏。它需要一秒或更少的时间。当元素在Javascript中可见时,它会切换回隐藏

HTML

<asp:Button ID="btnFromCalOpen" Width = "35" runat="server" Text="&gt;" style="display:none; visibility:hidden;" OnClientClick ="ShowCal()" /> 

的Javascript

function ShowCal() { 

var elem = document.getElementById('MainContent_CalendarFrom'); 

if (elem.visibility = "hidden") { 
    alert("Show"); 
    elem.style.visibility = "visible"; 
    elem.style.display = "inline"; 
} 
else { 
    alert("Hide"); 
    elem.style.visibility = "hidden"; 
    elem.style.display = "none"; 
} 
} 

它当过我的按钮点击刷新所有元素的风格属性,如

请帮

+0

这不是HTML,它是ASP.NET。如果您有客户端问题,请执行服务器端代码并​​向我们显示*输出*。 – Quentin

回答

2

您有一个您的代码错误/错误在这里

if (elem.visibility = "hidden") { 

你不检查if,但你把它设置为隐藏!

为了避免这种错误的尝试这种方式/技巧在你的代码

if ("hidden" == elem.visibility) { 
0

两个主要问题。

  1. elem.visibility不是您的对象的属性。如果你想看看样式设置,它将是elem.style.visibility
  2. =====进行比较,而不是=。您正在执行=的分配操作。

试试这个代码:

function ShowCal() { 

    var elem = document.getElementById('MainContent_CalendarFrom'); 

    if (elem.style.visibility == "hidden") { 
     alert("Show"); 
     elem.style.visibility = "visible"; 
     elem.style.display = "inline"; 
    } 
    else { 
     alert("Hide"); 
     elem.style.visibility = "hidden"; 
     elem.style.display = "none"; 
    } 
} 

仅供参考,没有必要同时设置style.visibilitystyle.display。如果您要将style.display设置为“无”,则不需要可见性设置。

你的代码的简化版本会是这样(你可以看到工作here in this jsFiddle):

function ShowCal() { 

    var elem = document.getElementById('MainContent_CalendarFrom'); 

    if (elem.style.display == "none") { 
     elem.style.display = "inline"; 
    } else { 
     elem.style.display = "none"; 
    } 
} 

,并从HTML此标记删除visibility: hiddendisplay: none是你所需要的。

作为参考(如果这是可能的话),这是像jQuery或YUI这样的库很方便的地方之一。在jQuery中,这只是:

function ShowCal() { 
    $("#MainContent_CalendarFrom").toggle(); 
}