【问题标题】:Losing css class after postback回发后丢失 css 类
【发布时间】:2013-10-02 07:43:28
【问题描述】:

我有一个 javascript,我可以通过它动态更改列表的 css 类。

我的清单:

 <div class="BreadCrumbDiv">
            <ul id="breadcrumbs-two">
                <li><a href="#" onclick="changeClass(a1);" class="current1" id="a1">Step1
                    and user</a></li>
                <li><a href="#" onclick="changeClass('a1');" id="a2">Step2</a></li>
                <li><a href="#" onclick="changeClass('a1');" id="a3">Step3</a></li>
                <li><a href="#" onclick="changeClass('a1');" id="a4">Step4</a></li>

            </ul>
        </div>

Java 脚本:

   function changeClass(elementid) {
        var lis = document.getElementById(elementid);
        lis.className = "current";
        lis.className = "current1";
    }

现在从我的按钮中,我像这样调用 javascript

 <asp:button id="btnNextODCDetails" runat="server" text="Next" cssclass="Button" onclientclick="changeClass('a2');"/>

但是一旦回发发生,更改的 css 样式就不起作用了。我不想使用更新面板。请有人帮助我。

提前致谢 古勒杰

【问题讨论】:

  • 你能把css也发一下吗
  • 第一次更改onclick="changeClass(a1);"到 onclick="changeClass('a1');"
  • 你也在做服务器端处理吗?如果你是你的页面将回发并刷新
  • 是的佩特,点击按钮我也有一些服务器端代码。
  • 嗨Shado,我已经改变了,但仍然没有工作。

标签: javascript asp.net css


【解决方案1】:

当您回发数据时,将从 aspx 标记开始再次创建控件树。 因此,无论您在客户端对 html 元素所做的任何更改都会丢失。

【讨论】:

  • 正确,但是有什么办法可以保留css。
【解决方案2】:

当页面完全发布并再次呈现时,您将丢失所有客户端代码 (JS) 更改。

如果您仍然需要,则使用隐藏字段或其他方式以某种方式保留信息,并在页面加载时检查相同内容并将其设置在客户端。

您可以使用

执行此客户端代码

jQuery:

 $(document).ready(function(){ // your checking});

JavaScript:DOMContentLoaded

<script>
  document.addEventListener("DOMContentLoaded", function(event) {
    console.log("DOM fully loaded and parsed");
  });
</script>

IE:

object.addEventListener("DOMContentLoaded", handler, useCapture) //IE model

【讨论】:

  • 嗨,Murli,你能给我发一些示例链接吗?其实我没看懂。
【解决方案3】:

我得到了答案。我稍微改变了我的脚本。我在单击按钮事件时调用了脚本。

  string script = " $(document).ready(function () { $('#breadcrumbs-two li #a2').addClass('current');  $('#breadcrumbs-two li #a2').removeClass('current');  $('#breadcrumbs-two li #a2').addClass('current1');  });";
        ClientScript.RegisterClientScriptBlock(this.GetType(), "function", script, true);

古勒杰

【讨论】:

    【解决方案4】:

    在 Page_Load 之后在客户端使用此代码: 它实际上对我有用。

    ScriptManager.RegisterStartupScript(Me.Page, GetType(Page), String.Format("StartupScript"), "<script type=""text/javascript""> GetAttributeName(); </script>", False)
    

    【讨论】:

      猜你喜欢
      • 2019-04-05
      • 2016-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-23
      • 2010-10-24
      • 2014-06-22
      相关资源
      最近更新 更多