在C#中调用Javascript函数无法正常工作

时间:2012-01-25 07:56:06

标签: c# javascript asp.net

我想用急剧的代码调用javascript函数。 我想隐藏ID为c变量“li_name”的特定Li标签。 为此,我调用了一个javascript函数。

Cs代码:

  li_name = DSRolePermission.Tables[0].Rows[k]["MENUNAME"].ToString();
  StringBuilder script = new StringBuilder();

  script.Append("<script type=\"text/javascript\">");

  script.Append("li_visibility('" + li_name + "')");

  script.Append("</script>");

  Page.ClientScript.RegisterClientScriptBlock(typeof(object), "JavaScriptBlock", script.ToString());

JS代码:

 <script type="text/javascript">
           function li_visibility('<%=li_name %>') {
document.getElementById('<%=li_name %>').style.display = 'hidden';

      }      
</script>

但是这段代码运行不正常。

4 个答案:

答案 0 :(得分:3)

您应该将您的js代码更改为:

<script type="text/javascript">
   function li_visibility(id) {
       document.getElementById(id).style.display = 'none';    
   }      
</script>

我想使用隐藏值,使用visibility属性;

element.style.visibility = 'hidden'; //'visible' to show;

注意:    使用 visibility:hidden 时,元素占用的空间仍然存在。     display:none ,将隐藏元素和占用空间。

答案 1 :(得分:1)

通过使用相同的密钥,只会执行第一个调用,其余的将被静默忽略。

假设您在循环中拥有此代码,请将元素ID添加到JS密钥:

Page.ClientScript.RegisterClientScriptBlock(typeof(this), "JavaScriptBlock_" + li_name, script.ToString());

同样改变了类型,最好传递调用页面/控件的类型。

答案 2 :(得分:0)

为什么在JS中添加c#var?只需将其更新为: <script type="text/javascript"> function li_visibility(x) { document.getElementById(x).style.display = 'hidden'; }</script>

答案 3 :(得分:0)

<script type="text/javascript">
    function li_visibility('<%=li_name %>') 
    {
        document.getElementById('<%=li_name.ClientID %>').style.display = 'hidden';
    }      
</script>

这可能会有所帮助