【问题标题】:Call Javascript method from code behind从后面的代码调用 Javascript 方法
【发布时间】:2013-03-06 16:11:05
【问题描述】:

我在 Javascript 中有一个函数可以使标签不可见。我想从后面的代码中调用这个函数。我无法让它隐形。这是这两行代码。

后面的C#代码:

          Page.ClientScript.RegisterStartupScript(GetType(), "MyFunction", "MyFunction();", true);

javascript:

         <script type ="text/javascript" language="javascript">
          function MyFunction()
          {
                 document.getElementById("Label8").style.display = 'none';

          }
          </script>

如果有任何错误,请告诉我。看起来控制不仅仅是方法定义。

谢谢

【问题讨论】:

  • 页面上有clientscriptmanager吗?
  • 如果您所做的只是设置显示无,您为什么不从代码隐藏中执行此操作?这也将保证干净的页面加载......

标签: c# javascript asp.net code-behind


【解决方案1】:

getElementById 中使用服务器控制(标签)的ClientID 或将ClientIDMode 设置为静态标签并确保html 元素对脚本的可用性,因为您可以在关闭之前放置脚本标签 body的标签

<script type ="text/javascript" language="javascript">
      function MyFunction()
      {
          document.getElementById("<%= Label8.ClientID %>").style.display = 'none';    
      }
</script>

【讨论】:

  • 还是不行。控制不会进入方法体。调用方法行是否正确?
  • 在正文的结束标记之前添加脚本标记。
【解决方案2】:

我假设您的页面上有这样的标签;

<asp:Label ID="lblExample" runat="server" ClientIDMode="Static" Text="Hello"></asp:Label>

那我建议你用jQuery,你的js函数应该是这样的;

<script type ="text/javascript" language="javascript">
   function hideLabel() 
   {
     $("#lblExample").hide();
   }
</script>

最后在后面的代码中像这样调用你的 js 函数;

 ClientScript.RegisterStartupScript(this.GetType(), DateTime.Now.ToString(), "hideLabel();", true);

如果您使用ScriptManagerMasterPage 则这样调用;

 ScriptManager.RegisterStartupScript(this,this.GetType(), DateTime.Now.ToString(), "hideLabel();", true);

【讨论】:

  • 我无法使其不可见。 ClientScript.RegisterStartupScript(GetType() 不是蓝色的。是有问题吗?
  • 控件不会转到 javascript 中的那个方法。
  • 三聚你用过jQuery吗?
  • 而 c# 必须接受 GetType() 或 this.GetType()。他们是一样的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2019-09-06
  • 2011-12-02
  • 1970-01-01
相关资源
最近更新 更多