2011-03-03 51 views
4

我有内部ASP一个div:内容:C#asp.net调用JavaScript的

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> 
<div id="slidebar" style="display:none;" >There are some pending approvals.Please approve by the 25th of this month 

<a href="#" id="slink" style="margin-left:10px;" onclick="fade('slidebar');">Click here to close <sup style="font:caption;color:#373636;">X</sup></a> 
</div> 

<script language="javascript" type="text/javascript"> 
function showbanner() 
    { 
    document.getElementById("slidebar").style.visibility="visible"; 
    } 
</script> 
<\asp:content> 

和后面的代码:

ClientScript.RegisterClientScriptBlock(Page.GetType(), "displaybanner", "return showbanner();", true); 

我不能调用从代码的功能showbanner后面,即使我直接使用registerclientscript调用showbanner中的语句...它不会被调用。

请帮

+0

你的aspx将<\ asp:content>作为您的第一个内容占位符的关闭标记。这是发布时发生错误,还是在您的代码中? – Tony 2011-03-03 19:35:01

+0

检查您的结束标记: – 2011-03-03 19:35:12

+0

这是一个打字错误...没有问题的标记 – abbas 2011-03-03 19:36:32

回答

0

我不知道为什么你的注册脚本不工作,但你试过直接把JavaScript调用网页上的脚本块里面?如果这样做,然后将脚本块封装在页面底部的可见=“false”的面板中。在你确定你想让它工作的代码背后,将可见性设置为true。

如果您正在使用jQuery我也想包你的脚本块的内容:

$(document).ready(function() { 
    //javascript call here 
}); 

只是为了确保它不会被调用之前的页面实际上可以处理它。

这一切都假设你的函数调用是好的,问题在于注册客户端脚本。

+0

我在onload函数中调用了另一件事......是一个问题? – abbas 2011-03-03 20:02:13

+0

不确定,但检查Equiso的答案。看起来他已经钉上了你的问题。 – William 2011-03-03 20:05:56

4

性质visibilitydisplay是不一样的,改变的js函数:

function showbanner() 
{ 
    document.getElementById("slidebar").style.display="block"; 
} 

也改变背后

ClientScript.RegisterStartupScript(Page.GetType(), "displaybanner", "showbanner();", true); 

所以执行脚本的页面有负载或后您的代码否则它不会找到该元素。

+0

但问题是,即使我添加警报..它不会被解雇......(在showbanner内)) – abbas 2011-03-03 20:07:11

+0

注意到我也删除了'return',这导致了一个js错误,导致脚本无法运行,因为你实际上并没有从该函数返回任何东西 – Equiso 2011-03-03 20:11:02

+0

我同意这是一个错误...但删除了它,仍然不工作:( – abbas 2011-03-03 20:12:30

0

好我的团队mebers之一马希想出了一个解决方案...而不是CleientScript.reg .....

我们用Page.RegisterStartupScript,它工作正常:))