2017-09-23 46 views
0

我在的.aspx頁面(HTML標記)有一個腳本工作:腳本代碼不與方法

<div id="alert"> 
    <asp:Label ID="lblAlert" style="font-size: xx-large" runat="server"></asp:Label> 
</div> 
<!-- /.alert --> 

<script> 

    function AutoHideAlert(v) { 
     var al = document.getElementById('<%=lblAlert.ClientID%>'); 

     al.innerText = v; 

     $("#alert").fadeTo(3500, 500).slideUp(1500, function() { 
      $("#alert").slideUp(500); 
     }); 
    } 

</script> 

我打電話aspx.cs文件AutoHideAlert(v)功能(代碼-Behind)使用RegisterStartupScript和我在ShowMessage方法添加RegisterStartupScript

private void ShowMessage(string msg) 
{ 
    ScriptManager.RegisterStartupScript(this, GetType(), null, "AutoHideAlert('"+msg+"');", true); 
} 

問題是,當我打電話ShowMessage我包含腳本代碼行的thod不工作。但是當我運行腳本代碼行然後它的工作;問題是爲什麼它不與ShowMessage一起運行?

編輯1:從@ M4N的評論,我試圖通過設置第三個參數"Alert Message"但它仍然無法正常工作。

private void ShowMessage(string msg) 
{ 
    ScriptManager.RegisterStartupScript(this, GetType(), "Alert Message", "AutoHideAlert('"+msg+"');", true); 
} 
+0

你試過將'key'參數(第三個參數)設置爲某個值? – M4N

回答

1

我想ScriptManager.RegisterStartupScript在生成腳本之前生成腳本。由於JS在目前瀏覽器中執行讀取,所以在執行AutoHideAlert的那一刻,如果不存在尚未 嘗試使用$(document).ready是你的JQuery

ScriptManager.RegisterStartupScript(this, GetType(), "Alert Message", 
    "$(document).ready(function(){ AutoHideAlert('"+msg+"'); }", true); 

或者document.addEventListener('DOMContentLoaded'不JQuery的

ScriptManager.RegisterStartupScript(this, GetType(), "Alert Message", 
    "document.addEventListener('DOMContentLoaded', 
           function(){ AutoHideAlert('"+msg+"'); })", true); 
+1

如何使用方法? – AsifAli72090

+0

有2個使用JQuery和沒有的例子,Ido不知道你是否有JQuery這就是爲什麼我給你兩個 – ASpirin

+0

問題沒有解決,但我已upvoted :( – AsifAli72090