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

在C#中调用Javascript函数无法正常工作,c#,javascript,asp.net,C#,Javascript,Asp.net,我想用c代码调用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\"

我想用c代码调用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());
li_name=DSRolePermission.Tables[0]。行[k][“MENUNAME”]。ToString();
StringBuilder脚本=新建StringBuilder();
脚本。追加(“”);
script.Append(“LIU可见性(““+LIU名称+”)”);
脚本。追加(“”);
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>

功能li_可见性(“”){
document.getElementById(“”).style.display='hidden';
}      

但是此代码无法正常工作。

您应该将js代码更改为:

<script type="text/javascript">
   function li_visibility(id) {
       document.getElementById(id).style.display = 'none';    
   }      
</script>
注: 使用“可见性:隐藏”时,元素占用的空间仍然存在。
显示:无将隐藏元素和占用的空间。

您应该将js代码更改为:

<script type="text/javascript">
   function li_visibility(id) {
       document.getElementById(id).style.display = 'none';    
   }      
</script>
注: 使用“可见性:隐藏”时,元素占用的空间仍然存在。 display:none,将隐藏元素和占用的空间。

为什么要在JS中添加一个c#var?只需将其更新为:

函数li_可见性(x){
document.getElementById(x.style.display='hidden';
}

为什么要在JS中添加c#var?只需将其更新为:

函数li_可见性(x){
document.getElementById(x.style.display='hidden';
}


功能li_可见性(“”)
{
document.getElementById(“”).style.display='hidden';
}      
这可能会有所帮助


功能li_可见性(“”)
{
document.getElementById(“”).style.display='hidden';
}      

这可能有助于使用相同的键,只有第一个调用将被执行,其余调用将被默默忽略

假设循环中有此代码,请将元素ID添加到JS键:

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

还更改了类型,更好的做法是传递调用页/控件的类型。

通过使用相同的键,只有第一个调用将被执行,其余调用将被无声地忽略

假设循环中有此代码,请将元素ID添加到JS键:

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

还更改了类型,更好的做法是传递调用页/控件的类型。

这只需从服务器端传递javascript函数中的li_名称,如page.ClientScript.RegisterClientScriptBlock(typeof(object),“JavaScriptBlock”,“li_可见性(“+li_name+”);这也不起作用:-(是否有必要更改C sharp函数的代码。另外,请确保如果您的服务器事件导致页面部分加载,则情况可能不同。检查firebug控制台中是否存在错误我的评论中的代码有点错别字,请尝试此页面。ClientScript.RegisterClientScriptBlock(typeof(object),“JavaScriptBlock”,“li_visibility(“+li_name+”);@Pallavisahan如果仍然不起作用,请解释到底出了什么问题-您有错误吗?另外,请查看我的答案,了解您缺少的其他内容。这将起作用,只需从服务器端传递javascript函数中的li_名称,如Page.ClientScript.RegisterClientScriptBlock(typeof(object),“JavaScriptBlock”,“li_visibility(“+li_name+”);这也不起作用:-(是否有必要更改C sharp函数的代码。还要确保如果您的服务器事件导致页面部分加载,则情况可能不同。检查firebug控制台中的错误我的评论中的代码有点输入错误,请尝试此页面。ClientScript.RegisterClientScriptBlock(typeof(object),“JavaScriptBlock”,“li_可见性(“+li_name+”));@Pallavisahan如果仍然不工作,请解释到底出了什么问题-您遇到了错误?另外,请查看我的答案,了解您缺少的其他内容。您正在传递“li_name”“将服务器内联端脚本中的”li_visibility“函数传递给js中的li_visibility函数。那么,为什么要再次像这样动态传递客户端javscript函数“li_visibility(“”)?将服务器内联端脚本中的”li_name“传递给js中的li_visibility函数。那么,为什么要再次动态传递客户端javscript函数?”“li_可见性(“”)“像这样?+1对于此额外信息”也更改了类型,传递调用页/控件的类型是更好的做法。“+1对于此额外信息”也更改了类型,传递调用页/控件的类型是更好的做法。”