2011-03-03 149 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,它工作正常:))