DIV style = none,但div仍然显示(用于弹出处理图形)

时间:2015-07-02 13:52:36

标签: javascript c# jquery asp.net

我遇到了一个弹出处理图形的问题,该图形位于DIV元素内部,我无法消失。如果需要,图形会正确显示,但是当我尝试将其显示为无时,它仍然存在。

我正在使用如下所示的微调器功能: http://www.codeproject.com/Tips/701197/A-master-page-level-spinner-animation

所以,我的母版页中有div元素:

  <!--Content start-->
        <div id="content">
            <asp:ContentPlaceHolder ID="MainContent2" runat="server">

            </asp:ContentPlaceHolder>

            <div class="clr"></div>
            <div id="SpinnerContainer"></div> 
            <div id="Spinner" style="background:url(/images/loader.gif) no-repeat center #fff;"></div> 
        </div>
        <!--Content end-->

我的母版页中有一些java脚本可以显示如下:

 function ToggleSpinnerBlock(Visible) {
        var displayValue = Visible ? "block" : "none";
        document.getElementById("SpinnerContainer").style.display = displayValue;
        document.getElementById("Spinner").style.display = displayValue;

        var isIE = navigator.userAgent.indexOf('MSIE') > 0;
        if (Visible && isIE) {
            $('#Spinner').css("backgroundImage", "");
            setTimeout("AppendSpinnerImageForIE();", 10);
        }
    }

连接的CSS样式如下:

/* Loader spinner styles */
  div#SpinnerContainer
    {
        position: absolute;    
        display: none;
        left: 0;
        right: 0;
        top: 0;
        bottom: 0;
        background-color: #fff;
        opacity:0.4;
        filter:alpha(opacity=40); /* For IE8 and earlier */
        z-index: 1000; /* Important to set this */
    } 
 div#Spinner
    { 
        position: absolute;
        display: none;
        width:50px;
        height: 50px;
        top: 48%;
        left: 48%;            
        z-index:1001;
        overflow: auto;
    } 

在我的子表单中,我的按钮调用javascript,如下所示:

                    <asp:Button ID="btnFilter"  ToolTip="Select to search for patients using the above filter criteria" runat="server" Text="Filter" 
                        onclick="btnFilter_Click" OnClientClick="return BeforePostBack()" CssClass="btnDownloadSearchClear"/>

这一切都很好 - 我按下按钮,我得到了我的微调器。大。

但是,在我的代码中,我需要能够隐藏微调器。所以在我的c#服务器代码中,我使用:

 Page.ClientScript.RegisterStartupScript(this.GetType(), "", "HideSpinner();", true);

在我的子(主应用程序)页面中调用新的javascript函数,如下所示:

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent2" runat="server">
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</asp:ToolkitScriptManager>

<script type="text/javascript">
    function BeforePostBack() {
        $('#PostBackResult').text('');
        ToggleSpinnerBlock(true);
        return true; //So that allow post back to server
    }
    function HideSpinner() {
        $('#PostBackResult').text('');
        HideSpinnerBlock(false);
        return true; //So that allow post back to server
    } 


</script>

然后按如下方式调用母版页面javascript:

    function HideSpinnerBlock(Visible) {
        var displayValue = Visible ? "block" : "none";
        document.getElementById("Spinner").style.display = 'none';
        document.getElementById("SpinnerContainer").style.display = 'none';

    } 

现在我100%知道正在调用javascript HideSpinnerBlock(我已经通过Firebug发送警报和错误代码),并且正在调用它,但是微调器错误仍然在屏幕上。

有什么想法吗?

PS - 是的,我知道我的HideSpinnerBlock可以使用False设置调用ToggleSpinnerBlock,但在此失败后,我决定对其进行硬编码。

有什么想法吗?我正在把头发拉出来。

1 个答案:

答案 0 :(得分:0)

也许尝试将背景设置为无。这就是你的微调器。你应该真正创建一个具有诸如......的属性的类

.hideSpinner {

    display: none !important;
    background: none !important;
    background-image: none !important;
}

然后只需添加课程......

var d = document.getElementById("Spinner");
d.className = d.className + " hideSpinner";